v3にアップグレードした後、クライアント側またはサーバー側のいずれかでsocket.disconnect()
を呼び出すと、マネージャーの基になる接続も閉じられているようです。同じマネージャー/基になる接続を使用する他のすべてのソケットも切断されます。
この問題をどこに提出すればよいかわかりません。 多分それはengine.iov4にルートを持っていますか?
アップグレード中の私のプロジェクトの差分は次のとおりです。 関係のない変更も含まれていることをお詫び申し上げます。 私が強調する主なことは、接続のセットアップと管理の方法に変更を加えていないことです( "disconnect"、 "close"、 "io.socket"に対してcmd + Fを使用できます)。
このjsfiddleをご覧ください。
v2の動作では、クライアント側とサーバー側でsocket.close()
を呼び出すと、マネージャーに複数の名前空間がある場合にのみそのソケットを閉じる必要があります。そのソケットのマネージャーの下にあるすべての多重化ソケットを閉じる必要はありません。
代わりにsocket.iov2を使用する場合は、動作の違いを確認してください。
私は何かを壊したと思って自分のコードをデバッグするのにたくさんの時間を費やしました: ')
修正を楽しみにしています! そして、v3の開始にご尽力いただきありがとうございます。
「接続」イベントはソケット接続で発生することはなく、マネージャーのconnecting
配列を埋めません。
https://github.com/socketio/socket.io-client/blame/master/lib/manager.ts#L599
_destroyが呼び出されると、 if (this.connecting.length) return; this._close();
は常に接続を閉じます。
クライアントコードに問題はありません。 サーバーコードで、「接続中」という名前のイベントが見つかりませんでした。
これが「接続」の放出を取り除くコミットです。
https://github.com/socketio/socket.io-client/commit/b60e909039d4bbb979d32ec86ac16c5398526b44#diff -f0e64910289a49966c99ceadaa5637404e3439ec0812a4bdb7003fe1e5a33d1c
@darrachequesneこの問題を確認してください。
@ david-fong詳細な手順に感謝します:+1:
これはhttps://github.com/socketio/socket.io-client/commit/f8f60fc860f51aa6465fc32dd9275a8e1d22f05d($#$ [email protected]
含まれています)で修正する必要があり
繰り返しになりますが、詳細なレポートに感謝します。これは本当に役に立ちます。