La désactivation des battements de coeur Socket.IO (Node.js)
Question
La documentation socket.io mentionne que les battements de coeur peuvent être personnes handicapées comme ceci:
io.disable('heartbeats');
Malheureusement, tout cela semble arrêter les hearbeats d'être envoyé, les clients déconnecter encore quand ils ne transmettent pas hearbeats.
Ce qui suit ne fonctionne pas non plus:
io.set('heartbeats', false);
J'ai essayé quelques intervalles de réglage 0, sans succès:
io.set('heartbeat timeout', 0);
io.set('heartbeat interval', 0);
Toutes les suggestions sur ce qui pourrait bien les battements de coeur désactiver?
La solution
Le code est
io.disable('heartbeats');
Testé avec succès sur socket.io v0.8.7
Sans désemparer
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
Avec la désactivation
debug - client autorisé
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"}]}
Autres conseils
Il y a quelque chose de mal avec les battements de coeur. J'ai le dernier socket.io et le noeud 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');
});
Client est droit débranché après la connexion.
Définir le niveau de journalisation des socket.io, avec le niveau de log 2, nous ne retournerons pas voir tous les battements de cœur de chaque prise, mais seulement les poignées de main et déconnexions
io.set ( 'niveau de journal', 2);