3

クライアントは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プロパティを見つけましたが、それは正しいものではないようです。

4

2 に答える 2

2

私の責任です。

新しい孤立したプロジェクトで「問題」を再現しようとしました。サーバー アプリケーションが古い古い SignalR ライブラリを使用していることがわかりました。最新にアップデートしたら問題なく動作しました。デビッド、助けてくれてありがとう。

于 2013-01-28T11:52:27.733 に答える