Socket-IO erkennt, wenn der Client die Verbindung unterbrochen hat

9

Ich muss erkennen können, wenn ein Benutzer die Verbindung zum Socket verloren hat, es scheint nicht, dass socket.on("disconnect") aufgerufen wird, wenn ich gerade meinen Laptop schließe, so dass der Ajax-Anruf, der benötigt wird, nicht ausgeführt wird ausgeführt werden, um die Datenbank zu aktualisieren und den Benutzer als offline zu markieren. Wie kann ich überprüfen, ob die Verbindung geschlossen wurde oder was?

    
Dylan Cross 07.02.2012, 19:38
quelle

2 Antworten

3

Wie bereits erwähnt Ссылка , hat Socket.IO eine eigene Heartbeat-Implementierung. Aber die Standardeinstellungen sind ein 25s-Intervall und ein 60s-Schwellenwert für eine verlorene Verbindung.

Also mein Ratschlag: Legen Sie die Standardeinstellungen wie erwartet beim Testen fest. Andernfalls können Sie den Schwellenwert verfehlen.

Beispiel:

%Vor%     
sja 24.07.2013 11:30
quelle
2

Wir sind auch darauf gestoßen und benutzen, wie oben erwähnt, unseren eigenen Heartbeat-Timer.

Zum Beispiel gibt der Server alle 5 Sekunden einen Heartbeat aus (wir senden einfach die Serverzeit aus). Der Client hat eine 11-Sekunden-Zeitüberschreitung, so dass es 2 Chancen hat, den Herzschlag zu erfassen. Wenn es den Heartbeat empfängt, setzen wir den Timer zurück. Wenn wir beide Heartbeats verpassen, wird die Timeout-Funktion ausgeführt und Sie tun, was Sie wollen.

Ziemlich einfach.

    
DomA 12.02.2013 15:14
quelle

Tags und Links