2013-03-06 71 views
0

所以我有一個顯示問題,並想知道解決它的最佳方法。當$ .connection.hub.stateChanged事件觸發並且處於斷開連接狀態時,我會向用戶顯示一個對話框,告訴用戶連接丟失。 但不幸的是,當我改變頁面時,這個事件被觸發並且在頁面改變之前顯示對話框,顯示這個錯誤幾秒鐘。hub.statechange更改頁面時斷開

當我導航到不同的按鈕時,禁用statechange事件的最佳方法是什麼?

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

或者是有當頁面更改事件轂之前解僱一個jQuery事件將被斷開:或者我可以在事件像做somecheck?

回答

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 
});