Ich verwende Socket.io und möchte den Status der Verbindung zum Server von der Clientseite aus erfahren.
Etwas wie das:
socket.status // return true if connected, false otherwise
Ich benötige diese Informationen, um dem Benutzer ein visuelles Feedback zu geben, wenn die Verbindung unterbrochen oder aus irgendeinem Grund getrennt wurde.
Antworten:
Sie können die
socket.connected
Eigenschaft überprüfen :var socket = io.connect(); console.log('check 1', socket.connected); socket.on('connect', function() { console.log('check 2', socket.connected); });
Es wird dynamisch aktualisiert. Wenn die Verbindung unterbrochen wird, wird es so lange eingestellt,
false
bis der Client die Verbindung wieder aufnimmt. So einfach zu überprüfensetInterval
oder so ähnlich.Eine andere Lösung wäre,
disconnect
Ereignisse zu erfassen und den Status selbst zu verfolgen.quelle
console.log
'ing thesocket
variable;)socket.connected
nichtsocket.socket.connected
.socket.connected
und es verhält sich wie erwartet (Rückgabe entweder wahr oder falsch). Beachten Sie, dass esfalse
unmittelbar nach dem Anruf ist,io(server)
abertrue
fast unmittelbar danach. Ich bin mir nicht sicher, ob dies eine Rennbedingung ist, obwohl ich feststelle, dass es keine Rückrufoption gibt,io()
also denke ich, dass es einfach so funktioniert.io(...)
sagt nur, dasssocket.io
eine Verbindung hergestellt werden soll, aber erst wenn dasconnect
Ereignis gesendet wurde, hat es tatsächlich eine Verbindung hergestellt.Mit dieser Funktion können Sie überprüfen, ob die Verbindung unterbrochen wurde oder nicht: -
var socket = io( /**connection**/ ); socket.on('disconnect', function(){ //Your Code Here });
Hoffe es wird dir helfen.
quelle
Heutzutage funktioniert socket.on ('connect', ...) bei mir nicht. Ich benutze den folgenden Code, um bei der ersten Verbindung zu überprüfen.
if (socket.connected) console.log('socket.io is connected.')
und verwenden Sie diesen Code, wenn die Verbindung wiederhergestellt wird.
socket.on('reconnect', ()=>{ //Your Code Here });
quelle
Verfolgen Sie den Status der Verbindung selbst. Mit einem Booleschen Wert. Stellen Sie es
false
bei der Deklaration ein. Verwenden Sie die verschiedenen Ereignisse (Verbinden, Trennen, Wiederverbinden usw.), um den aktuellen Booleschen Wert neu zuzuweisen. Hinweis: Die Verwendung von undokumentierten API-Funktionen (z. B.socket.connected
) ist keine gute Idee. Die Funktion könnte in einer nachfolgenden Version entfernt werden, ohne dass die Entfernung erwähnt wird.quelle
Die Antwort von @ robertklep auf die Überprüfung von socket.connected ist korrekt, mit Ausnahme des Ereignisses zum erneuten Verbinden ( https://socket.io/docs/client-api/#event-reconnect) . aber wenn Sie überprüfen,
socket.connected
dann ist es falsch.Ich bin mir nicht sicher, ob es ein Fehler oder eine Absicht ist.
quelle