web-dev-qa-db-ja.com

SignalR:クライアントの接続状態を検出

.disconnectイベントにバインドすることにより、SignalRを使用してクライアント側で切断イベントをトラップする方法を見てきました。

これを行ったので、クライアントを「再接続待機サイクル」に入れて、成功するかユーザーがキャンセルするまで継続的に接続を試行します。ハブは接続状態プロパティを公開していますか?私は(擬似コード)のようなものを考えています

var isConnected;

function onConnected() { isConnected = true; }

hub.disconnect = function() { while(hub.notconnected) { connect(); }
30
Heather

JSクライアントは、一定時間(デフォルトは110秒)再接続を試みます。 connection.stateChangedイベントをサブスクライブし、状態が変化したときに更新を取得して、ユーザーに表示したり、さまざまな切断シナリオに対するSignalRの応答を検証したりできます。

私のテストでは、予想どおり、状態は切断および再接続などに正しく更新されました。

信号機接続の詳細

function connectionStateChanged(state) {
    var stateConversion = {0: 'connecting', 1: 'connected', 2: 'reconnecting', 4: 'disconnected'};
    console.log('SignalR state changed from: ' + stateConversion[state.oldState]
     + ' to: ' + stateConversion[state.newState]);
}

connection = $.connection(signalR_Endpoint);
connection.stateChanged(connectionStateChanged);
connection.start({ waitForPageLoad: false });
51
Mazrick

クライアントは常に接続しようとしています。あなたはそれを心配する必要はありません。 接続が正常に再確立されたときに何かをしたい場合に備えて、再接続可能なイベントをリッスンできます。

編集:これは変更されました。クライアントは一定期間のみ再接続を試みます。その後、切断イベントをキャッチして、手動で再起動する必要があります。

8
nmat