我々はプロパティを別の時間を指定します。このリンクを経由してきました。SignalRのタイムアウトプロパティは
ただ、上記のポストから再度繰り返す異なる状況に:。
「クライアントがオフラインになったときにハブ再接続が直後に接続が回復、その後に発生SignalRの設定値、主としてので、以下の例のタイムスタンプを決定逐語的に時間を取ることはありません。ここ
は、いくつかの例とその結果(時間形式のM:SS)です。再接続動作を伴う:
状況1
0時は、 - クライアントが接続
を回復 - クライアントが原因ISP問題(それは接続を失い実現)0時15への接続を失った - クライアントがサーバに接続し、OnConnectedは
午後12時10分にトリガされます
0:16 - OnReconnectedイベントが
状況2
0:00トリガされる - クライアントがサーバーに接続し、OnConn ected
午後12時10分トリガさ - 0時15分クライアントが原因イーサネットケーブルを引っ張っへの接続を失った(それが切断さだ実現していません)
を - クライアントが
二つの事はここに
を発生することがあります接続を取り戻しますA:午後12時16 - 何も起こりませんし、クライアントがその前の接続
Bとの続く:0:〜45 - クライアントは、*
その切断を実現B:0:46 - クライアントは再接続状態に移行します
B:0:47 - クライアントは正常に再接続し、OnReconnectedイベントがトリガーされます。
状況3
午後12時00分 - クライアントは、(それが切断されます実現しない)によるイーサネットケーブルを引っ張るとの接続を失っ
- クライアントがサーバーに接続し、OnConnectedは夜12時10がトリガされます
0:〜45 - 再接続状態
0にクライアントの移行 - クライアントがその*午後12時46分を切断を実現
1:15 - サーバーは、クライアントが長時間経過したと判断して、それを忘れてしまい、少し後で再接続するとクライアントが受信する「切断」コマンドをキューに入れます。 ***
午前1時15分 - OnDisconnect 1時16トリガさ - クライアントがない "ソフト"(OnReconnectedをトリガしません)再接続
1時18分 - クライアントが接続
1時17分取り戻します - クライアントは、 "停止" とソフト切断を行い(OnDisconnectedをトリガしない)
状況4
コール - クライアントは、 "切断" コマンドを1:19検索しますクライアントが実現 - 〜45:
午前0時00分 - クライアントが原因イーサネットケーブル(それが切断されています実現していません)
0を引っ張っへの接続を失った - クライアントがサーバに接続し、OnConnectedは
0時10分にトリガされますその*
0:46切断 - 再接続状態
1時15分にクライアントの移行は - サーバーは、クライアントが長すぎるために行ってきたと判断し、その後のための「切断」コマンドをキューイング、それについて忘れ若者に再接続した場合に受信するクライアントy後で。 ***
午前1時15分 - OnDisconnect 1時30トリガーされる - クライアントは**(長すぎるしようとして)
午前1時30分に再接続しようとして停止します - 切断された状態にクライアント遷移を
- クライアントサイドキープアライブチェック:キープアライブの不足のためにクライアントがオフラインになったときを判断するために使用されます。長いポーリング転送には使用されません
**クライアント側切断タイムアウトのため:クライアントが長時間にわたって再接続したことを判断するために使用され、その間にサーバーがクライアントを忘れている可能性があります
***サーバーの切断タイムアウトのため:クライアントを忘れた場合を判断するために使用します。これは、接続がサーバー上でデッドとしてタグ付けされると、発生し始める時間です。最終的に、サーバーはクライアントのトピックの切断コマンドをキューに入れます。このコマンドは、クライアントに新しい接続を開始する必要があることをクライアントに通知します(再接続する場合)。トピックがクリーンアップされると、コマンドはサーバーから消えます。「私たちが見つけている何
たちは切断を取得することで、.NET SignalRクライアントとASP.NET MVC SignalRサーバーの間でかなり頻繁に(1及び上記2)に再接続し、また生じないことを切断します再接続(3以上4)我々はServerSentEventsプロトコルが使用されていることを知っている
我々が(増加または減少)を微調整するために必要なものタイムアウトの特性を知ることは困難であると:。。
- の数を減らします接続を解除して再接続します。
- 状況3と4では全く終了しません。
ここで重要なことは、.NET SignalR Clientは実際には常にサーバーに接続されているWindowsサービスであることです。 、我々が使用している
- のConnectionTimeout = 110秒
- DisconnectTimeout = 30秒
- キープアライブ= 30秒 また
:
は、我々は現在だけであるデフォルトを、保持していますSignalR 1.0.1。
ありがとうございました。これは我々に働く何かを与える。 PS。私はクライアント側のKeep Aliveが接続解除に役立つことを確認したらすぐに回答としてマークします。 – smitra
ハハはそれが助けてくれることをうれしく思います=) –
こんにちは、私は実際にdevブランチに.NETクライアント側のKeepAliveを見つけることができませんでした。これはConnectionクラスのプロパティではないようです。私が見つけることができる最も近いのは、KeepAliveDataで、IConnectionインターフェイスのタイムアウトプロパティです。私はこれが私たちが言及しているものだと思いますか? – smitra