1

ユーザーがアプリケーションにログインするたびにソケット接続を作成します。これは、同じブラウザ ウィンドウ内で新しいタブを開くと、各ブラウザ タブに対して複数のソケット接続が確立されることを意味します。これらのタブを閉じると問題が発生します。/disconnect インバウンド サービスが呼び出されます。これは、一部の接続では /disconnect が呼び出されず、一部では呼び出されることを意味します。これを一貫して再現することはできません (/disconnect と呼ばれることもあれば、そうでないこともあります)。

/disconnect に依存して、特定のチャネル用に作成された (データストアに保存された) 一時オブジェクトをクリーンアップしているため、/disconnect が呼び出されないすべての OpenChannel オブジェクトが残っています。

これは Chrome と FireFox で発生し、IE では発生しません。API を正しく使用していますか? タブではなくブラウザウィンドウごとに1つのソケット接続が必要ですか? (この場合、Cookie にトークンを保存すると、このトークンを使用して接続を再確立しますか?これは、クライアント ID ごとに 2 つの接続としてカウントされませんか?

ありがとう。

4

1 に答える 1

1

同じクライアント ID で作成されたトークンに対して 2 つ以上の接続を開くと、動作が未定義になります。たとえば、user.user_id() をクライアント ID として使用していて、同じユーザーが 3 つのタブを開いている場合、それぞれに新しいトークンを作成したとしても、それらのタブのいずれかに対して /disconnected コールバックを取得しない可能性があります。それらのタブの。

于 2012-02-08T20:53:21.207 に答える