2011-11-29 21 views
15

SignalRのポーリングサーバを停止する方法はありますか?エラーが発生した場合、サーバーのポーリングを停止します。ポーリングハブは$.connection.hub.start()で開始されていますので、私はそれが$.connection.hub.stop()またはそのようなもので停止できると仮定しました。しかし、うまくいかないようですが、stop()に電話してもポーリングは続行されます。ポーリングをやめるもう一つの方法はありますか?SignalRのポーリングを停止するには?

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

答えて

37

場合:ハンドラ関数ではポーリングが再初期化されていないことを原因と例外を投げますハブを使用している場合は、ハブの接続を停止できます。

$.connection.hub.stop(); 
+0

の構文は$ .connection.hub.connection.stopに変更されています)?それは私のために働くすべてです。 – dove

+0

いいえ、それはありません。これは変更されていません – davidfowl

+0

明らかに私のミックスアップ、あなたの時間を無駄にして申し訳ありません、今私は、特定のハブ、$ connection.myHub.stop()、および上記の接続を停止するの違いを読んで時間です。私は知っているので、私はサンドボックスをセットアップすると思います。 – dove

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"; 
}); 
関連する問題