选项卡背景化后每隔几分钟 SignalR 断开连接
Posted
技术标签:
【中文标题】选项卡背景化后每隔几分钟 SignalR 断开连接【英文标题】:SignalR disconnecting every few minutes after the tab is backgrounded 【发布时间】:2021-12-08 06:15:17 【问题描述】:我正在使用 SignalR 在 Vue.js 前端和 dotnet 后端之间进行通信。
当您在(看似随机的)一段时间后将前端选项卡置于后台时,连接会断开。因为我使用的是自动重新连接,所以套接字会重新连接,但是直到选项卡重新聚焦之前,套接字将继续每隔几分钟断开连接,将其置于重新连接循环中。
一些事情:
似乎在除 Firefox 之外的所有浏览器中都会发生 在本地同时运行前端和后端时,没有问题 在本地运行前端但远程运行后端确实会导致问题 两个应用程序都没有在 IIS 上运行 Kestrel 超时设置为一小时(以防万一) 导致重新连接开始循环的初始断开连接不会在一致的时间发生,只是在 5-10 分钟左右 两端均未抛出错误客户端代码非常基础:
this.connection = new HubConnectionBuilder()
.withUrl(this.url)
.withAutomaticReconnect()
.build()
服务器端代码同样基本:
public override async Task OnConnectedAsync()
//Create client code here
await base.OnConnectedAsync();
public override async Task OnDisconnectedAsync(Exception exception)
if(exception != null) _logger.LogErrorToFile(exception.Message);
_logger.LogInformationToFile($"Client with id: GetConnectionId() disconnected.GetUsername()");
await base.OnDisconnectedAsync(exception);
【问题讨论】:
这可能对github.com/SignalR/SignalR/issues/4536有帮助 Chrome 今年早些时候进行了更新,当连接在大约 5 分钟后没有聚焦时会停止连接。 Nirbhay 评论的问题/修复实际上是针对 ASP.NET 版本 (2.4.2) 并且与 .NET CORE 不兼容。这是针对 .NET CORE 提出的问题 - github.com/dotnet/aspnetcore/issues/31079 @FrankM 那个帖子正是我需要的,谢谢 @Coffee 很高兴能帮到你。我将发布作为答案。如果您有时间请标记,以防其他人寻找相同的内容。 @Coffee 请标记 Frank 的答案以显示您的问题已解决 【参考方案1】:Chrome 在今年早些时候进行了更新,当连接在大约 5 分钟后没有处于焦点时会停止连接。 Nirbhay 评论的问题/修复实际上是针对 ASP.NET 版本 (2.4.2) 的,并且与 .NET CORE 不兼容。这是针对 .NET CORE 提出的问题 - github.com/dotnet/aspnetcore/issues/31079
【讨论】:
以上是关于选项卡背景化后每隔几分钟 SignalR 断开连接的主要内容,如果未能解决你的问题,请参考以下文章