2012-10-04 7 views
8

私は、各キーストロークが(DBに保存された)サーバーに送信され、すべてのクライアントに返されたチャットアプリケーション用のSignalR(0.5.3)ハブを使用しています。ソートの文字列トークン)がサーバーから返されます。アプリケーションプールリサイクルでのSignalR接続処理

アプリケーションプールがリサイクルされるまで、メモリ内のサーバー状態が失われているため、キーストロークをすべてのクライアントに中継しなくなり、サーバーから戻り値が返されません。この時点で、私はSignalRを介したすべてのリクエストがIISによってキューに入れられ、アプリケーションプールがリサイクルされると処理されると考えます。

私はこのシナリオをどのように処理して、すべてのクライアントがアプリケーションのプールリサイクルによるサーバーの使用不能/遅延を認識し、ユーザーにしばらく待ってから再接続時に操作を再開するよう通知することができますか?

答えて

4

2つのオプションがあります。

0.5.3では、クライアントが「再接続中」または「切断中」になったときを検出し、サーバーに問題があることをユーザーに通知できます。ほとんどの状況で、クライアントがサーバーがなくなると切断されていることをクライアントが実際に知ることはありません。

OR

あなたは次のリリース(1.0alpha)私たちはあなたのためにこれの大部分の世話をするのを待つ場合

。サーバーがない場合は、onConnectionSlowイベントをトリガーし、クライアントがサーバーにオンラインに戻るまで「再接続」状態に移行します(情報を受け取らない場合)。クライアントは、アプリケーションプールのリサイクルなどのエッジの場合に、サーバーがなくなる(この機能を追加している)かどうかを知ることもできます。

希望すると便利です。

+0

オプションの場合:クライアントが長時間の遅延(タイムアウト)の後に切断を知るだけなので、再接続/切断イベントによる処理はうまくいかないかもしれませんが、私はまだそれを撃つでしょう。 – Nick

+0

@Taylor Mullen - こんにちは、これは、シグナル・サーバーがなくなると、クライアントがタイムアウトするまで再接続しようとしていることがあり、クライアント側にイベントが存在しないことを意味すると考えています現時点でこれを検出するために使用されますか?乾杯は – Will

+0

@部分的に正しいです。 0.5.3では、「nowReconnecting」などの特定のイベントは受信されませんが、SignalRがstateChangedイベントを介して再接続しようとしていることを検出できます。再接続状態になると、stateChangedイベントが発生し、新しい接続状態が再接続されます。また、クライアントにタイムアウトはありません。永久に再接続しようとします。 –

関連する問題