node.js les sockets.io de la déconnexion de toutes les ~25 secondes (battement de cœur)
Je suis en train de configurer un node.js serveur, à l'aide d'une douille.io. Le problème que je vois c'est que mon serveur est de déconnecter+de reconnecter le client toutes les 25 secondes.
Voici mon code serveur:
var io = require('socket.io').listen(5876);
io.sockets.on('connection', function (socket)
{
console.log("New connection established");
socket.on('disconnect', function()
{
console.log("A client has disconnected.");
});
}
Mon client se connecte à l'aide de la socket.io.js de la distribution. Si je comprends bien (apparemment à tort), j'ai besoin de mon client d'envoyer un "battement de cœur" (un message de "::2") toutes les 15 secondes pour empêcher le serveur de penser le lien est mort et le débrancher. En gros:
<script src="socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:5876');
socket.on('connect', function(data)
{
console.log("Connected to server.");
setInterval(function() { socket.emit("::2"); console.log("sent heartbeat"); }, 15000); //schedule a heartbeat for every 15 seconds
});
</script>
Mais le client est toujours déconnecté+rebranché toutes les 25 secondes (à l'exclusion de la première 25e de seconde-tique).
L'node.js serveur de journal de la console ressemble à ceci (peut avoir découpé quelques antérieure identique connecter/déconnecter phases, comme il était en écho à toutes les 25 secondes):
New connection established
debug - emitting heartbeat for client 652791160849839915
debug - websocket writing 2::
debug - set heartbeat timeout for client 652791160849839915
debug - got heartbeat packet
debug - cleared heartbeat timeout for client 652791160849839915
debug - set heartbeat interval for client 652791160849839915
info - transport end
debug - set close timeout for client 652791160849839915
debug - cleared close timeout for client 652791160849839915
debug - cleared heartbeat interval for client 652791160849839915
A client has disconnected.
debug - discarding transport
debug - client authorized
info - handshake authorized 5961067041159055274
debug - setting request GET /socket.io/1/websocket/5961067041159055274
debug - set heartbeat interval for client 5961067041159055274
debug - client authorized for
debug - websocket writing 1::
New connection established
Comment puis-je arrêter mon serveur à partir de la déconnexion de+de reconnecter le client toutes les 25 secondes?
avez-vous jamais résoudre ce problème? je suis d'avoir exactement le problème. J'ai rétrogradé à 0.8.7 et toujours le même problème. debug - tiré de pulsation délai d'attente pour le client 3744936361854682925 info - transport fin de débogage de près délai d'attente pour le client 3744936361854682925 debug - compensé près délai d'attente pour le client 3744936361854682925
Il y a une solution de contournement qui pourrait fonctionner: github.com/socketio/socket.io/issues/777 a part ça, j'ai dernièrement été simplement en utilisant les versions les plus récentes de la prise.io et n'ai pas rencontré de problèmes.
malheureusement, mon projet ne peut pas utiliser quoi que ce soit plus récente que 0.9.x 1,0 change beaucoup de choses qui rompre totalement notre projet. Je vais regarder la solution de contournement
Dang, j'espère que la solution fonctionne alors. Si pas, la prochaine chose que je serais probablement essayer est d'abaisser encore plus loin que 0.8.7 et espérer qu'une version plus ancienne qui n'ont pas de bug. A part ça, j'ai peur, je n'ai aucune idée.
OriginalL'auteur Josh1billion | 2012-03-05
Vous devez vous connecter pour publier un commentaire.
Êtes-vous d'utiliser la dernière version de la prise.io, 0.9.1/0.9.1-1? Si oui, c'est un problème connu confirmé par Guillermo. La recommandation actuelle est de revenir à 0.9.0 ou 0.8.7
https://github.com/LearnBoost/socket.io/issues/777
Vous pouvez spécifier une version spécifique à installer: npm install [email protected]
Ah parfait, merci!
ayant le même problème, mais la restauration n'a eu aucun effet
Même chose ici, avec la prise 0.9.16, et 0.9.0, je reçois des transports à la fin (rythme cardiaque timeout)' une minute après le démarrage de l'application. Avec socketio 0.8.7-je obtenir une séquence de debug - set/désactivée pulsation du temps pour le client.
OriginalL'auteur CoderMD666
vous n'avez pas besoin d'envoyer un battement de coeur de garder la prise connectée, aussi la syntaxe de la prise.émettre est
OriginalL'auteur Jude Calimbas