Deaktivieren von Socket.io Heartbeats (Node.js)
Frage
Das Socket.io -Dokumentation erwähnt, dass Herzschläge wie SO deaktiviert werden können:
io.disable('heartbeats');
Leider trennen sich die Kunden, obwohl dies die Hearbeats nicht zu verhindern scheint, die Kunden immer noch zu trennen, wenn sie keine Hearbeats senden.
Das Folgende funktioniert auch nicht:
io.set('heartbeats', false);
Ich habe versucht, einige Intervalle auf 0 zu setzen, ohne Erfolg:
io.set('heartbeat timeout', 0);
io.set('heartbeat interval', 0);
Irgendwelche Vorschläge zu Was könnte Herzschläge richtig deaktivieren?
Lösung
Der Code ist
io.disable('heartbeats');
Erfolgreich auf Socket.io v0.8.7 getestet
Ohne Deaktivieren
debug - emitting heartbeat for client 299833185260419425
debug - websocket writing 2::
debug - set heartbeat timeout for client 299833185260419425
debug - got heartbeat packet
debug - cleared heartbeat timeout for client 299833185260419425
debug - set heartbeat interval for client 299833185260419425
Mit Deaktivieren
Debug - Kunde autorisiert
info - handshake authorized 1205975980561506547
debug - setting request GET /socket.io/1/websocket/1205975980561506547
debug - client authorized for
debug - websocket writing 1::
debug - websocket writing 5:::{"name":"news","args":[{"hello":"foo"}]}
Andere Tipps
Mit Herzschlägen stimmt etwas nicht. Ich habe die neueste Socket.io und Node 0.6.x
info - socket.io started
debug - client authorized
info - handshake authorized 734447051478827620
debug - setting request GET /socket.io/1/websocket/734447051478827620
debug - client authorized for
debug - websocket writing 1::
debug - websocket writing 5:::{"name":"hello"}
info - transport end (socket end)
debug - set close timeout for client 734447051478827620
debug - cleared close timeout for client 734447051478827620
debug - discarding transport
// server code
var io = require('socket.io').listen(8080);
io.disable('heartbeats');
io.sockets.on('connection', function (socket) {
socket.emit('hello');
});
Der Client wird direkt nach der Verbindung getrennt.
Legen Sie die Protokollebene von Socket.io ein, wobei die Protokollstufe 2 nicht alle Herzschläge jedes Sockel
io.set ('log Level', 2);