18

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>
4

2 に答える 2

41

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

$.connection.hub.stop();
于 2012-04-09T05:20:29.497 に答える
2

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

ただし、ソースコードを調べたところ、特にエラーハンドラでは、.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";
});
于 2011-11-29T23:03:26.210 に答える