2013-04-11 15 views
5

W socket.io zdarzenie rozłączenia nie uruchamia się, gdy aktywny jest Xhr-polling transportowy. Jeśli przełączę transport na websockets, działa dobrze, ale w trybie xhr jego działanie nie działa.socket.io - zdarzenie rozłączenia nie uruchamia się w Xhr-polling

/* Basics */ 
var express = require('express'), 
    app = express(), 
    server = require('http').createServer(app), 
    io = require('socket.io').listen(server); 

server.listen(1337, null); 

io.set('transports', ['xhr-polling']); 

// routing 
app.get('/', function (req, res) { 
    res.sendfile("index.html"); 
    app.use(express.static(__dirname)); 
}); 

io.sockets.on('connection', function (socket) 
    socket.on('disconnect', function() { 
     console.log('LOL'); 
    }); 
}); 

W poniższym kodzie rozłączenie nie ognia, ale jeśli mogę usunąć linię -
io.set('transports', ['xhr-polling']);
To działa idealnie, więc dlaczego to nie działa z XHR-odpytywanie? ale tylko z websockets?

Jak mogę to naprawić? Czy czegoś brakuje?

z góry dzięki;)

+0

Potrzebuję odpowiedzi również na to pytanie. –

+2

Czy jest to związane z tą odpowiedzią? http://stackoverflow.com/questions/12043893/socket-io-force-a-disconnect-over-xhr- polling – Strat

Odpowiedz

1

Nie da się od razu wykryć rozłącza użyciu XHR-Polling ponieważ klient łączy wielokrotnie dla każdej wiadomości.

Socket.io radzi sobie z tym, ustawiając limit czasu bezczynności na gniazdach Xhr-polling.

Jest odpowiednia dokumentacja: https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

Zobacz opcję heartbeat interval konfiguracji. Wartość domyślna to 25 sekund.

Websocket utrzymuje stałe gniazdo tcp między przeglądarką a serwerem, dzięki czemu socket.io może zwykle wykryć natychmiast po odłączeniu gniazda.

1

miałem ten sam problem, a następnie użyłem opcji { „sync rozłączania na rozładunku”: true} w gnieździe klient:

var socket = io.connect('http://yourServerDomain.com', {'sync disconnect on unload' : true}); 

zmusza gniazdo wysłać zdarzenie rozłączania natychmiast.

Powiązane problemy