クライアントは2秒ごとにSignalRハブに再接続します。それが設計によるものなのか、それとも私による間違いなのか知りたいのですが。
- SignalRバージョン:1.0.0-rc2
- WindowsAzureでSignalRHubをホストするセルフホスト/IISなし(サービスバスなどなし)
- ローカルホストでの同じ動作
- ハートビート間隔を1分に設定しましたが、変更はありません。キープアライブ/接続タイムアウトも試してみました。
クライアント:
var connection = new HubConnection("http://xyz.cloudapp.net/push");
connection.Start().Wait();
サーバ:
var listenUrl = "http://xyz.cloudapp.net/push";
WebApplication.Start<Startup>(listenUrl );
フィドラー-スクリーンショット
ログ(クライアント、StateChangedイベント/ HubConnection):
16:20:48 State Changed: Disconnected -> Connecting
16:20:52 State Changed: Connecting -> Connected
16:20:53 State Changed: Connected -> Reconnecting
16:20:53 State Changed: Reconnecting -> Connected
16:20:55 State Changed: Connected -> Reconnecting
16:20:55 State Changed: Reconnecting -> Connected
[...]
質問1:
再接続のためにすべてのクライアントが2秒ごとにサーバーを呼び出すことを回避するにはどうすればよいですか?
質問2:
再接続の「問題」に関する情報を取得するにはどうすればよいですか。内部ログを取得する方法はありますか?
編集1: トランスポートをロングポーリングに変更しました:
connection.Start(new LongPollingTransport()).Wait();
デフォルトでは、長いポーリングとサーバー送信イベントが使用されていることがわかりました。トランスポートとして長いポーリングのみを使用する場合、再接続は2秒ごと(現在は約1分ごと)に発生しません。ただし、構成値(heartbeartなど)も使用されません。
質問3 長いポーリングトランスポートの再接続時間を設定するにはどうすればよいですか?ReconnectDelayプロパティを見つけましたが、それは正しいものではないようです。