node.js sockets.io-trennen der Verbindung alle ~25 Sekunden (heartbeat-bezogen)

Ich versuche zum einrichten einer node.js server mit socket.io. Das problem das ich sehe ist, dass mein server trennen+wiederherstellen der Verbindung der client alle 25 Sekunden.

Hier ist mein server code:

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.");
    });
}

Mein client verbindet sich mit dem socket.io.js Verteilung. Wie ich es verstehe (scheinbar falsch), muss ich meinen client zu senden "heartbeat" (eine Nachricht von "::2") alle 15 Sekunden verhindert, dass der server denkt, der Anschluss ist tot, und trennen Sie es. Grundsätzlich:

<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>

Aber der client ist noch immer getrennt+wieder alle 25 Sekunden (mit Ausnahme der ersten 25-Sekunden-tick).

Den node.js server-console-log sieht wie folgt aus (kann schneiden Sie aus einigen früheren identisch mit dem verbinden/trennen der Phasen, als es hallte alle 25 Sekunden):

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

Wie kann ich verhindern, dass mein server trennen+wiederherstellen der Verbindung der client alle 25 Sekunden?

  • soweit ich weiß, brauchen Sie nicht, um das manuelle senden von heartbeat-Pakete wie das gehandhabt wird von socket.io. Überprüfen Sie die Verbindung und Trennung Ereignisse nach der Einnahme aus Ihrem Handbuch Herzschlag ruft.
  • hast du jemals dieses Problem beheben? ich bin mit dem genauen Problem. Ich herabgestuft 0.8.7 und immer noch gleiche Problem. debug - gefeuert-heartbeat-timeout für client 3744936361854682925 info - transport-end-debug - nahe-timeout für client 3744936361854682925 debug - geräumt in der Nähe timeout für client 3744936361854682925
  • Es gibt einen workaround hier, die funktionieren könnte: github.com/socketio/socket.io/issues/777 Abgesehen davon, habe ich in letzter Zeit gerade mit den neuesten Versionen der Steckdose.io haben, und haben nicht auf Probleme stoßen.
  • leider ist mein Projekt nicht verwenden können, etwas neuer als 0,9.x 1.0 verpasst eine Menge Dinge, die vollständig zu brechen unser Projekt. Ich werde dir die Problemumgehung
  • Dang, hoffentlich der workaround funktioniert dann. Wenn nicht, ist die nächste Sache, die ich würde wahrscheinlich versuchen, ein downgrade auch weiter als 0.8.7 und hoffen, dass einige der älteren version nicht den bug. Abgesehen davon, dass ich fürchte, ich habe keine Ahnung.
  • okay, danke!

InformationsquelleAutor Josh1billion | 2012-03-05
Schreibe einen Kommentar