Socket.io-client: ソケットのv3切断は、基礎となる接続を閉じているようです。

作成日 2020年11月16日  ·  4コメント  ·  ソース: socketio/socket.io-client

あなたはしたい:

  • [x]バグを報告する
  • []機能をリクエストする

現在の動作

v3にアップグレードした後、クライアント側またはサーバー側のいずれかでsocket.disconnect()を呼び出すと、マネージャーの基になる接続も閉じられているようです。同じマネージャー/基になる接続を使用する他のすべてのソケットも切断されます。

この問題をどこに提出すればよいかわかりません。 多分それはengine.iov4にルートを持っていますか?

アップグレード中の私のプロジェクトの差分は次のとおりです。 関係のない変更も含まれていることをお詫び申し上げます。 私が強調する主なことは、接続のセットアップと管理の方法に変更を加えていないことです( "disconnect"、 "close"、 "io.socket"に対してcmd + Fを使用できます)。

再現手順(現在の動作がバグの場合)

このjsfiddleをご覧ください。

期待される動作

v2の動作では、クライアント側とサーバー側でsocket.close()を呼び出すと、マネージャーに複数の名前空間がある場合にのみそのソケットを閉じる必要があります。そのソケットのマネージャーの下にあるすべての多重化ソケットを閉じる必要はありません。

設定

  • OS:Windows 10
  • ブラウザ:Chrome 86.0
  • socket.ioバージョン:3.0.0

代わりにsocket.iov2を使用する場合は、動作の違いを確認してください。

その他の情報(例:スタックトレース、関連する問題、修正方法の提案)

全てのコメント4件

私は何かを壊したと思って自分のコードをデバッグするのにたくさんの時間を費やしました: ')

修正を楽しみにしています! そして、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]含まれています)で修正する必要があり

繰り返しになりますが、詳細なレポートに感謝します。これは本当に役に立ちます。

このページは役に立ちましたか?
0 / 5 - 0 評価