質問

SignalRのポーリングサーバーを停止する方法はありますか?エラーが発生した場合、投票サーバーを停止したい。ポーリングハブは開始されます $.connection.hub.start(), 、だから私はそれがで止めることができると思いました $.connection.hub.stop() またはそのようなもの。しかし、それはうまくいかないようです、呼び出しの後も投票は続きます stop(). 。投票を止める別の方法はありますか?

<script type="text/javascript">

 var chatHub = $.connection.chatHub;
 var connection = $.connection.hub;

chatHub.addMessage = function (message) {
      $('#messages').append('<li>' + message + '</li>');
    };

connection.error(function (error) {
 $('#messages').append('<li>' + "error connecting: closing connnection" + '</li>');
    connection.stop(); //This doesn't seem to work   
        });

connection.start();

</script>
役に立ちましたか?

解決

ハブを使用している場合は、ハブの接続を停止できます。

$.connection.hub.stop();

他のヒント

まず、それは必要ですか?通信エラーが発生した場合、明らかに再試行したいと思います。

しかし、私はソースコードを調べましたが、特にエラーハンドラーでは呼び出しができないことを意味します .stop() 指図。それぞれ、ハンドラー機能が終了した後、通信が2秒後に自動的に再現されるよりも効果はありません。

jquery.signalr.js(340行目)を参照してください。

$(instance).trigger("onError", [data]);

window.setTimeout(function () {
  poll(instance);
}, 2 * 1000);

私は1つの回避策を見つけました:ハンドラー関数で例外をスローします。

connection.error(function (error) { //$.connection.hub.error()
  $('#messages').append('<li>' + "error connecting: closing connnection" + '</li>');
  throw "Close SignalR connection";
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top