我有一个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