web-dev-qa-db-fra.com

Obtenir l'état de la connexion sur le client Socket.io

J'utilise Socket.io et j'aimerais connaître l'état de la connexion au serveur du côté client.

Quelque chose comme ça:

socket.status // return true if connected, false otherwise

J'ai besoin de cette information pour donner un retour visuel à l'utilisateur si la connexion a été interrompue ou si elle s'est déconnectée pour une raison quelconque.

50
franzlorenzon

Vous pouvez vérifier la propriété socket.connected:

var socket = io.connect();
console.log('check 1', socket.connected);
socket.on('connect', function() {
  console.log('check 2', socket.connected);
});

Il est mis à jour dynamiquement, si la connexion est perdue, il sera défini sur false jusqu'à ce que le client reprenne la connexion. Tellement facile à vérifier avec setInterval ou quelque chose comme ça.

Une autre solution serait d’attraper les événements disconnect et de suivre l’état vous-même.

94
robertklep

Vous pouvez vérifier si la connexion a été perdue ou non en utilisant cette fonction: -

var socket = io( /**connection**/ );
socket.on('disconnect', function(){
//Your Code Here
});

J'espère que cela vous aidera.

6
Ansari Abdullah

Suivez vous-même l'état de la connexion. Avec un booléen. Réglez-le sur false lors de la déclaration. Utilisez les différents événements (connexion, déconnexion, reconnexion, etc.) pour réaffecter la valeur booléenne actuelle. Remarque: l'utilisation de fonctionnalités d'API non documentées (par exemple, socket.connected) n'est pas une bonne idée. la fonctionnalité pourrait être supprimée dans une version ultérieure sans que la suppression soit mentionnée.

2
Ilan

Ces jours-ci, socket.on ('connect', ...) ne fonctionne pas pour moi . J'utilise le code ci-dessous pour vérifier lors de la 1ère connexion.

if (socket.connected)
  concole.log('socket.io is connected.')

et utiliser ce code lors de la reconnexion.

socket.on('reconnect', ()=>{
  //Your Code Here
});
1
Na Nonthasen

La réponse de @ robertklep à vérifier socket.connected est correcte sauf pour l'événement de reconnexion, https://socket.io/docs/client-api/#event-reconnect .__ reconnexion réussie. " mais lorsque vous cochez socket.connected, il est faux.

Pas sûr que ce soit un bug ou intentionnel. 

0
Qiulang