93 votes

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.

Voici ce qu'il en est :

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

J'ai besoin de ces informations pour donner un retour visuel à l'utilisateur si la connexion a été interrompue ou si elle s'est déconnectée pour quelque raison que ce soit.

142voto

robertklep Points 29669

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

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 mis à false jusqu'à ce que le client reprenne la connexion. Il est donc facile de le vérifier avec setInterval ou quelque chose comme ça.

Une autre solution serait d'attraper disconnect et de suivre l'évolution de la situation.

9voto

Ansari Abdullah Points 91

Vous pouvez vérifier si la connexion a été perdue ou non à l'aide de cette fonction :-

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

J'espère que cela vous aidera.

8voto

Na Nonthasen Points 143

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

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

et utiliser ce code lors de la reconnexion.

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

3voto

Ilan Points 163

Suivez vous-même l'état de la connexion. Avec un booléen. Mettez-le à false à 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 non documentées de l'API (par ex, socket.connected ), n'est pas une bonne idée ; la fonctionnalité pourrait être supprimée dans une version ultérieure sans que cette suppression soit mentionnée.

2voto

Qiulang Points 522

La réponse de @robertklep pour vérifier socket.connected est correcte sauf pour l'événement reconnect, https://socket.io/docs/client-api/#event-reconnect Comme l'indique le document, il s'agit d'un "déclenchement lors d'une reconnexion réussie". socket.connected alors elle est fausse.

Je ne suis pas sûr qu'il s'agisse d'un bug ou d'une intention.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X