1

OnDisconnectサーバー側)時々、バイパスできる(アプリケーションのリサイクルなど)ことを読みました。

OnDisconnected メソッドは、サーバーがダウンしたときやアプリ ドメインがリサイクルされたときなど、一部のシナリオでは呼び出されません。

そして、私は尋ねます:

ユーザーが接続すると、私は彼に を生成し、token それをユーザーに保持し、が呼び出されcookieたときに、そのトークンOnConnectに を添付します。connectionId

onDiconnect(が呼び出されるのと同じ方法で、 に値を設定しますdateDisconnected)

これは、2 人の接続ユーザー (同じブラウザー)もサポートします。

例 :

ここに画像の説明を入力

例 :

id         tokenId              ConnectionID         DateCreated            dateDisconnected
----------------------------------------------------------------------------------------------
1          500                    {1234-1234}          06-07-2013               null             
2          500                    {5432-5432}          06-07-2013               null             

そしてここに問題があります:

ユーザーがログインした場合 (このユーザーをログイン済みとして DB に書き込みます)、チャットを行ってからサーバーを再起動するとどうなりますか?

クライアントは再接続を試み、30 秒後に停止します。

しかし、その後、サーバーが稼働している場合(1時間後)-DBにまだログオンしているユーザーがいます。そして彼はそうではありません。(とにかく、その接続IDではありません...)

どうすればこの種の問題を解決できますか?

4

1 に答える 1

1

この問題を解決する最善の方法は、アプリケーションの起動時に全員をログアウトすることです。つまり、あなたの場合は、ログインしているすべてのトークン行を無効化/削除します。したがって、サーバーが起動するたびに、アプリケーションは誰もログインしていない新しい状態になります。

于 2013-07-07T18:12:41.767 に答える