0

そのため、表示の問題があり、それを解決する最善の方法を考えていました。$.connection.hub.stateChanged イベントが発生し、切断状態になると、接続が失われたことを示すダイアログがユーザーに表示されます。残念ながら、ページを変更すると、このイベントが発生し、ページが変更される前にダイアログが表示され、このエラーが数秒間表示されます。

別のボタンに移動したときに statechange イベントを無効にする最善の方法はありますか? または、次のようなイベントでsomecheckを実行できますか:

$.connection.hub.stateChanged(function (change) {
    if (change.newState === $.connection.connectionState.disconnected) {
        //Pseudo code:
        if (!pageIsChanging) {
            $('#lostConnectivityDiv').modal('show');
        }
    }
});

または、ハブが切断される前にページ変更イベントが発生したときのjqueryイベントはありますか?

4

1 に答える 1

2

接続が失われたことをユーザーに通知しようとする場合、より良いルートは再接続状態 (以下のB ) に結び付けることです。

回答を参照してください: signalR で再接続が発生するのはいつですか? 背景用。

A) SignalR の場合、真の接続損失が発生するポイントは 1 つだけです。上記のリンクの#4です。真の接続損失とは、SignalR 接続が再接続の試行を停止するポイントを意味します。

B) ただし、通知の実装方法によっては、再接続時にのみトリガーする必要があると主張することもできます (つまり、ネットワークはダウンしていますが、接続は回復しようとしています)。

とはいえ、どちらの方法でも通知を実装できます。

A の実装:

var tryingToReconnect = false;

$.connection.hub.reconnecting(function() {
    tryingToReconnect = true;
});

$.connection.hub.reconnected(function() {
    tryingToReconnect = false;
});

$.connection.hub.disconnected(function() {
    if(tryingToReconnect) {
        notifyUserOfDisconnect(); // Your function to notify user
    }
});

B の実装:

$.connection.hub.reconnecting(function() {
    notifyUserOfDisconnect(); // Your function to notify user
});
于 2013-03-06T05:16:00.287 に答える