我有一個MVC 4應用程序,SignalR同時連接到許多Android平板電腦。當設備進入睡眠狀態時,一些連接丟失,一些維持連接,看似沒有任何模式。Android設備睡眠時SignalR連接丟失
我對視圖下面的代碼來嘗試重新啓動時斷開連接:
$.connection.hub.disconnected(function() {
setTimeout(function() {
$.connection.hub.start();
}, 5000);
});
我還在Application_Start()方法中的下列行:
GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromHours(6);
GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromHours(6);
我明白6小時過多,這只是爲了確保連接永遠不會在測試過程中超時。
我還設置了在睡眠期間保持Wi-Fi連接的平板電腦。
但是,當平板電腦進入睡眠狀態時,幾分鐘後喚醒,一些連接仍然有效,而其他連接則不會。
如何確保SignalR連接在設備從睡眠狀態恢復時保持或重新啓動?
看起來像一個可怕的想法。特別是因爲你永遠不會在服務器上提出斷開連接(僅3小時後)。由於服務器沒有清理連接,因此您可能容易氾濫,並且內存不足。 – davidfowl
我同意,但正如我所說,這隻會在受控的環境中運行,我確切知道將有多少連接存在。我當然更喜歡當他們從睡夢中回來時重新連接平板電腦,但沒有解決方案,我發現將工作100%的時間 – cmarcum
太棒了。如果你100%意識到了這些影響,那很好。 – davidfowl