Sto provando a configurare un server node.js, usando socket.io. Il problema che sto vedendo è che il mio server sta disconnettendo + ricollegando il client ogni 25 secondi.node.js sockets.io disconnettendo ogni ~ 25 secondi (relativo all'heartbeat)
Ecco il mio codice del server:
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.");
});
}
mio client si connette utilizzando la distribuzione socket.io.js. A quanto ho capito (apparentemente in modo errato), ho bisogno che il mio client invii un "heartbeat" (un messaggio di ":: 2") ogni 15 secondi per impedire al server di pensare che la connessione sia morta e di scollegarla. In sostanza:
<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>
Ma il client è ancora sempre scollegato + ricollegato ogni 25 secondi (escluso il primo 25 secondi-tick).
Il log console del server node.js assomiglia a questo (potrebbe aver ritagliato alcune fasi collegare/scollegare anteriore identico, come è stato eco ogni 25 secondi):
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
Come posso fermare il mio server da scollegare + ricollegare il client ogni 25 secondi?
per quanto ne so non avete bisogno di inviare manualmente pacchetti heartbeat come questo viene gestito da socket.io. Prova a verificare gli eventi di connessione e disconnessione dopo aver ritirato le tue chiamate a heartbeat manuali. – f0x
hai mai risolto questo? \t sto avendo il problema esatto. Ho effettuato il downgrade a 0.8.7 e ho ancora lo stesso problema. timeout heartbeat debug per client 3744936361854682925 informazioni - debug di fine trasporto - imposta timeout chiusura per client 3744936361854682925 debug - tempo scaduto cancellato per client 3744936361854682925 –
@PranoyC C'è una soluzione qui che potrebbe funzionare: https://github.com/socketio/socket .io/issues/777 A parte questo, ultimamente ho usato solo le versioni più recenti di socket.io e non ho avuto problemi. – Josh1billion