Socket.io-client: La déconnexion v3 du socket semble fermer la connexion sous-jacente.

Créé le 16 nov. 2020  ·  4Commentaires  ·  Source: socketio/socket.io-client

Tu veux:

  • [x] signaler un bogue
  • [ ] demander une fonctionnalité

Comportement actuel

Après la mise à niveau vers la v3, lorsque j'appelle socket.disconnect() côté client ou côté serveur, il semble que la connexion sous-jacente du gestionnaire soit également fermée - toutes les autres sockets utilisant le même gestionnaire / connexion sous-jacente sont également déconnectées.

Je ne sais pas où déposer ce problème. Peut-être qu'il a une racine dans engine.io v4 ?

Voici un diff de mon projet lors de la mise à niveau . Je m'excuse qu'il contienne également des modifications sans rapport. La principale chose que je veux souligner est que je n'ai apporté aucune modification à la façon dont je configure et gère les connexions (vous pouvez cmd + F pour "déconnecter", "fermer", "io.socket").

Étapes à reproduire (si le comportement actuel est un bug)

S'il vous plaît voir ce jsfiddle .

Comportement attendu

Le comportement de la v2 est que l'appel de socket.close() côté client et côté serveur ne devrait fermer cette socket que lorsqu'un gestionnaire a plusieurs espaces de noms - il ne devrait pas fermer toutes les sockets multiplexées sous le gestionnaire de cette socket.

Installer

  • Système d'exploitation : Windows 10
  • navigateur : Chrome 86.0
  • version socket.io : 3.0.0

Observez la différence de comportement lorsque vous utilisez plutôt socket.io v2.

Autres informations (par exemple, stacktraces, problèmes connexes, suggestions de résolution)

Tous les 4 commentaires

J'ai passé beaucoup de temps à déboguer mon propre code en pensant que j'avais cassé quelque chose :')

J'attends le correctif avec impatience ! Et merci encore pour votre travail acharné dans le démarrage de la v3.

L'événement "connecting" n'est jamais déclenché lors de la connexion par socket et ne remplit pas le tableau connecting dans le gestionnaire :
https://github.com/socketio/socket.io-client/blame/master/lib/manager.ts#L599

Lorsque _destroy est appelé, if (this.connecting.length) return; this._close(); fermera toujours la connexion.

Je ne vois pas de problème dans le code client. Dans le code du serveur, je n'ai trouvé aucun événement nommé "connexion".

Voici le commit qui supprime l'émission de "connecting".

https://github.com/socketio/socket.io-client/commit/b60e909039d4bbb979d32ec86ac16c5398526b44#diff -f0e64910289a49966c99ceadaa5637404e3439ec0812a4bdb7003fe1e5a33d1c

@darrachequesne Pourriez-vous s'il vous plaît vérifier ce problème.

@david-fong Je pourrais en effet reproduire le problème, merci beaucoup pour les étapes détaillées :+1:

Cela devrait être corrigé par https://github.com/socketio/socket.io-client/commit/f8f60fc860f51aa6465fc32dd9275a8e1d22f05d (inclus dans [email protected] ).

Encore une fois, merci pour le rapport détaillé, cela aide vraiment!

Cette page vous a été utile?
0 / 5 - 0 notes