2012-10-05 121 views
1

如何檢測客戶端何時無法連接(或重新連接)到Signalr集線器?SignalR - 如何檢測客戶端連接/重新連接失敗(例如超時)

是否有在js客戶端上觸發的事件?

+0

道歉,看起來像一個重複... http://stackoverflow.com/問題/ 10726453/signalr-connect-disconnect-hub-blow-up – Will

+0

看起來我很快就對自己的問題發表了評論 - 在上面的鏈接中實現了這個解決方案,當我停止信號服務器時,它不會觸發事件我期望得到的觀點......關於聽最好的事件的想法? – Will

回答

3

迴應你的第二個評論:

目前在0.5.3當服務器消失SignalR不處理的情況。但是,這將在下一版1.0alpha中處理。

對於臨時我建議每5秒鐘ping服務器,看看請求失敗。如果它失敗了2次,那麼服務器可能關閉,你可以從那裏處理邏輯。

如果你想看到我們是如何做到這一點在這裏的下一個版本的鏈接GitHub的功能:https://github.com/SignalR/SignalR/issues/469

+0

謝謝。讀過新的實現後,D Fowler寫了以下內容......在客戶端,我們需要弄清楚最好的事件是什麼以及是否將keepAliveTimeout與重新連接分開。作爲一名開發人員,您是想爲每種邏輯編寫單獨的邏輯,還是隻關心網絡連接「消失」?開發者需要爲他們的應用做出決定需要多少細節。 如果我們確保事件分開,那麼我認爲我們需要在連接上有一個更高級別的事件,這意味着「網絡關閉」。也許重新連接工作也是如此。 – Will

+0

如果我們在負載均衡器後面有多個signalr盒 - 如果signalr響應告訴客戶端它不知道他們是誰,那麼它們將非常方便,因此他們可以再次觸發正確的連接並訂閱其丟失的組;這是否有意義?目前,如果客戶端遇到不存在的服務器,他們不知道服務器不知道他們希望從哪些組發送消息。 – Will

+0

就客戶而言,它只想知道它是斷開連接還是重新連接等。但是,在服務器不知道客戶是誰的情況下(並且客戶聲稱服務器應該知道),服務器會向客戶端抽出一條斷開連接命令,以強制它完成開始(協商等)。在這種情況下,開發人員可以編寫邏輯來重新加入X個組。另外,請記住,在下一個版本中,我們不允許自動重新加入組(安全問題)。因此,維護客戶端 –