Comment vérifier si le socket est toujours connecté?

J’ai une page sur laquelle les utilisateurs se connectent à mon serveur de nœud avec socket.io, mais je leur permets seulement d’avoir une connexion socket.io ouverte sur le serveur (en transmettant leur identifiant de compte lors de leur autorisation et de leur stockage dans un tableau) et cela fonctionne très bien 99% du temps. Le problème est que, parfois, lorsque les utilisateurs se déconnectent, l’événement de déconnexion côté serveur ne se déclenche pas pour une raison quelconque. Par conséquent, je ne peux pas effacer leur compte du groupe de clients, ce qui finit par les verrouiller.

Existe-t-il un moyen pour moi de vérifier si leur ancienne connexion de socket (dont j’ai l’identifiant) est toujours active? (Donc, si ce n’est pas le cas, je peux effacer leur ancienne connexion et les laisser se reconnecter)

Assurez-vous que les pulsations sont définies sur true (valeur par défaut). Si le délai est écoulé, la déconnexion devrait se produire automatiquement. Cependant, il y avait un rapport de bogue sur les battements de cœur qui ne fonctionnaient pas. Assurez-vous que vous avez la dernière version de Socket.IO (je ne suis pas sûr du statut du bogue).

Si vous avez toujours besoin d’aide, vous pouvez envoyer un ping à l’ancienne connexion lorsque l’utilisateur tente de se reconnecter:

Émettez un “ping” du serveur et répondez par “pong” du client si la connexion est toujours active. Si le ping expire (au bout de 20 secondes, par exemple), supprimez la connexion manuellement pour permettre à l’utilisateur de se reconnecter. Vous pouvez utiliser la commande ping pour informer le client d’origine qu’un autre client tente de se connecter et générer une interface utilisateur à cet effet.