2015-10-24 91 views
2

我是SignalR的新手,我有一個使用此技術與服務器進行通信的Web應用程序(這是非常酷的IMHO)。客戶端的SignalR句柄超時事件

我想知道的是 - 有沒有辦法在客戶端使用SingalR處理超時事件?有沒有在客戶端可以聽到的超時事件被觸發?

當我超時,我可以看到它在他登錄:

[12:56:47 GMT+0300 (Jerusalem Daylight Time)] SignalR: Keep alive has been missed, connection may be dead/slow. 
[12:56:54 GMT+0300 (Jerusalem Daylight Time)] SignalR: Keep alive timed out. Notifying transport that connection has been lost. 

只是要清楚,我不想跑我自己的計時器,並檢查是否出現超時,我問有沒有在SignalR中被解僱的事件?

謝謝!

回答

3

正如你可以閱讀here$.connection.hub.disconnected

處理斷開事件時嘗試重新連接 已超時顯示一條消息。在這種情況下, 與服務器重新建立連接的唯一方法是通過調用Start方法來重新啓動SignalR連接,該方法將創建一個新的連接ID 。以下代碼示例使用一個標記來確保 只有在重新連接超時之後才發出通知,而不是在調用 停止方法導致SignalR連接正常結束後發出 。

您可以通過$.connection.hub.disconnected事件處理管理連接超時:如果您使用長輪詢連接

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

收費attenction,因爲OnDisconnected()如果網絡連接突然下降那就不叫。

長輪詢沒有客戶端保持活動檢查,瀏覽器本身可能需要幾分鐘時間才能意識到連接已經死機。

Reference

+0

謝謝。看起來很簡單。 不知道我是如何錯過它是誠實的。 – LiranBo