Signalr 更改页面时hub.statechange断开连接

Signalr 更改页面时hub.statechange断开连接,signalr,Signalr,所以我遇到了一个显示问题,我想知道解决这个问题的最佳方法。当$.connection.hub.stateChanged事件触发且处于断开连接状态时,我会向用户显示一个对话框,说明连接已丢失。 但不幸的是,当我更改页面时,会触发此事件,并在页面更改之前显示对话框,显示此错误几秒钟 当我导航到其他按钮时,禁用statechange事件的最佳方法是什么?或者我可以做一些检查,比如: $.connection.hub.stateChanged(function (change) { if (ch

所以我遇到了一个显示问题,我想知道解决这个问题的最佳方法。当$.connection.hub.stateChanged事件触发且处于断开连接状态时,我会向用户显示一个对话框,说明连接已丢失。 但不幸的是,当我更改页面时,会触发此事件,并在页面更改之前显示对话框,显示此错误几秒钟

当我导航到其他按钮时,禁用statechange事件的最佳方法是什么?或者我可以做一些检查,比如:

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

或者在断开集线器之前触发页面更改事件的时间是否存在jquery事件?

如果您试图通知用户连接已断开,则最好连接到重新连接状态(下面的B)

有关背景信息,请参见:的答案

A) 对于信号器,只有一个点发生真正的连接丢失,即上面链接中的#4。当我说真正的连接丢失时,我指的是信号器连接停止尝试重新连接的点

B) 但是,根据您想要实现通知的方式,您也可以认为它只应在重新连接时触发(表示网络已关闭,但连接正在尝试恢复)

尽管如此,您可以通过任何一种方式实现通知

A.实施:

B的实施:

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
    }
});
$.connection.hub.reconnecting(function() {
    notifyUserOfDisconnect(); // Your function to notify user
});