Nachdem ich auf v3 aktualisiert habe, wenn ich socket.disconnect()
auf der Client- oder Serverseite aufrufe, scheint es, dass die zugrunde liegende Verbindung des Managers ebenfalls geschlossen wird - alle anderen Sockets, die denselben Manager / dieselbe zugrunde liegende Verbindung verwenden, werden ebenfalls getrennt.
Ich weiß nicht, wo ich dieses Problem einreichen soll. Vielleicht hat es root in engine.io v4?
Hier ist ein Diff meines Projekts während des Upgrades . Ich entschuldige mich, dass es auch einige nicht damit verbundene Änderungen enthält. Die Hauptsache, die ich hervorheben möchte, ist, dass ich keine Änderungen an der Einrichtung und Verwaltung von Verbindungen vorgenommen habe (Sie können cmd + F für "disconnect", "close", "io.socket" verwenden).
Bitte sehen Sie sich diese jsfiddle an .
Das Verhalten von v2 ist, dass das Aufrufen von socket.close()
auf der Client- und auf der Serverseite diesen Socket nur schließen sollte, wenn ein Manager mehrere Namespaces hat – es sollte nicht jeden gemultiplexten Socket unter dem Manager dieses Sockets schließen.
Beobachten Sie den Verhaltensunterschied, wenn Sie stattdessen socket.io v2 verwenden.
Ich habe eine Menge Zeit damit verbracht, meinen eigenen Code zu debuggen, weil ich dachte, ich hätte etwas kaputt gemacht :')
Freue mich auf die Korrektur! Und nochmals vielen Dank für Ihre harte Arbeit beim Starten von v3.
Das Ereignis "connecting" wird bei einer Socket-Verbindung nie ausgelöst und füllt nicht das Array connecting
im Manager:
https://github.com/socketio/socket.io-client/blame/master/lib/manager.ts#L599
Wenn _destroy aufgerufen wird, wird if (this.connecting.length) return; this._close();
immer die Verbindung schließen.
Ich sehe kein Problem im Clientcode. Im Servercode konnte ich kein Ereignis namens "connecting" finden.
Hier ist der Commit, der die Ausgabe von "Connecting" entfernt.
https://github.com/socketio/socket.io-client/commit/b60e909039d4bbb979d32ec86ac16c5398526b44#diff -f0e64910289a49966c99ceadaa5637404e3439ec0812a4bdb7003fe1e5a33d1c
@darrachequesne Könnten Sie bitte dieses Problem überprüfen.
@david-fong Ich konnte das Problem tatsächlich reproduzieren, vielen Dank für die detaillierten Schritte :+1:
Dies sollte durch https://github.com/socketio/socket.io-client/commit/f8f60fc860f51aa6465fc32dd9275a8e1d22f05d behoben werden (enthalten in [email protected]
).
Nochmals vielen Dank für den ausführlichen Bericht, das hilft wirklich!