如果浏览器选项卡处于非活动状态,SignalR 连接超时

时间:2021-02-22 21:42:27

标签: azure websocket signalr

如果我保持浏览器选项卡处于活动状态(每 5-6 分钟至少打开一次),我的 WebSocket 连接将通过 ping 请求保持活动状态(请参见附加的屏幕截图)。但是,如果我放弃该选项卡 10 分钟左右,/ping 请求将停止发生并且 WebSocket 连接终止。 对此有什么解释以及如何在设备唤醒时绕过它以保持连接活动?

PS:我怀疑我们最近迁移到 Azure Web 服务可能与此有关。或者一些浏览器政策可能会改变。 SignalR 实施了几年,我们现在第一次遇到这样的问题。

enter image description here

2 个答案:

答案 0 :(得分:3)

我们能够通过将断开连接超时增加到 90 秒并将服务器(ASP.NET 应用程序)上的保持活动属性设置为 10 秒来缓解该问题。

GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(90);
GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(10);

但我仍在等待 Github 上的官方回复。

答案 1 :(得分:1)

正如 Ben Cameron 已经说过的,我也认为这可能与节流机制有关。 请参阅有关此问题的 StackOverflow 帖子(包含解决方案的想法): SignalR and/or timer issues since Chrome 88