所以我有一个显示问题,并想知道解决它的最佳方法。当$ .connection.hub.stateChanged事件触发并且处于断开连接状态时,我向用户显示一个对话框,说明连接已丢失。 但不幸的是,当我更改页面时,此事件被触发并在页面更改之前显示对话框,显示此错误几秒钟。
导航到其他按钮时禁用statechange事件的最佳方法是什么?或者我可以在事件中做一些检查:
$.connection.hub.stateChanged(function (change) {
if (change.newState === $.connection.connectionState.disconnected) {
//Pseudo code:
if (!pageIsChanging) {
$('#lostConnectivityDiv').modal('show');
}
}
});
或者是否有一个jquery事件,用于何时在断开集线器之前触发页面更改事件?
答案 0 :(得分:2)
如果您尝试通知用户连接已丢失,则更好的路线将是重新连接状态(下面的 B )。
请参阅答案:When does a reconnect in signalR occour?了解背景信息。
<强> A)强> 对于SignalR,只有一个点发生真正的连接丢失,#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
});