54

私はSignalRの使用を開始し、ハブの再接続がいつ発生するかを把握しようとしていました。ウェブ上で満足のいく説明は見つかりませんでした。再接続が発生するタイミング/理由を誰かが説明できますか?

4

1 に答える 1

85

ハブの再接続は、クライアントがオフラインになり、すぐに接続を回復したときに発生します。SignalR構成値は、主に次の例のタイムスタンプを決定するため、時間を逐語的に使用しないでください。

以下に、再接続動作を含むいくつかの例とその結果(時間形式m:ss)を示します。

私が次のことに言及するとき、私はサーバー側のハブ方式を指します

  • OnConnected
  • OnDisconnected
  • OnReconnected

1)
0:00-クライアントがサーバーに接続し、OnConnectedがトリガーされます
0:10-ISPの問題が原因でクライアントが接続を失います(接続が失われたことに気付きます)
0:15-クライアントが接続を回復します
0:16-OnReconnectedイベントがトリガーされます

2)
0:00-クライアントがサーバーに接続し、OnConnectedがトリガーされます0:10-
イーサネットケーブルを引っ張ったためにクライアントが接続を失います(切断されていることに気づきません) 0:
15-クライアントが接続を回復します
ここで2つのことが起こります
A:0: 16-何も起こらず、クライアントは以前の接続を続行します
B:0:〜45-クライアントは切断されたことを認識します*
B:0:46-クライアントは再接続状態に移行します
B:0:47-クライアントは正常に再接続し、OnReconnectedイベントは引き金になった。

3)
0:00-クライアント がサーバーに接続し、OnConnectedがトリガーされます0:10-
イーサネットケーブルを引っ張ったためにクライアントが接続を失います(切断されていることに気づきません)
0:〜45-クライアントが切断されたことを認識します*0:46-クライアントの
移行再接続状態に入る
1:15-サーバーは、クライアントが長時間使用されていないと判断し、それを忘れて、クライアントが少し遅れて再接続した場合に受信する「切断」コマンドをキューに入れます。***
1:15-OnDisconnectedがトリガーされます1:16-
クライアントが接続を回復します1:
17-クライアントが「ソフト」再接続を実行します(OnReconnectedをトリガーしません) 1:18-
クライアントが「disconnect」コマンドを取得します
1:19-クライアントが「停止」を呼び出し、ソフト切断を実行します(OnDisconnectedをトリガーしません)

4)
0:00-クライアント がサーバーに接続し、OnConnectedがトリガーされます0:10-
イーサネットケーブルを引っ張ったためにクライアントが接続を失います(切断されていることに気づきません)
0:〜45-クライアントが切断されたことを認識します*0:46-クライアントの
移行再接続状態に入る
1:15-サーバーは、クライアントが長時間使用されていないと判断し、それを忘れて、クライアントが少し遅れて再接続した場合に受信する「切断」コマンドをキューに入れます。***
1:15-OnDisconnectedがトリガーされます1:30-
クライアントが再接続の試行を停止します(試行時間が長すぎます)**
1:30-クライアントが切断状態に移行します

*クライアント側のキープアライブチェックのため:キープアライブがないためにクライアントがオフラインになったことを判断するために使用されます。長いポーリングトランスポートには使用されません

**クライアント側の切断タイムアウトが原因:クライアントが長期間再接続していて、サーバーがその時間中にクライアントを忘れている可能性があるかどうかを判断するために使用されます

***サーバー切断タイムアウトによる:クライアントをいつ忘れるべきかを決定するために使用されます。これは、サーバーで接続が切断されたとタグ付けされてから発生し始める期間です。最終的に、サーバーはクライアントのトピックの切断コマンドをキューに入れ、クライアントに(再接続した場合)新しい接続を開始する必要があることを通知します。トピックがクリーンアップされると、コマンドはサーバーから消えます。

お役に立てれば!

于 2013-01-22T18:51:37.183 に答える