SignalR 在选项卡背景化后每隔几分钟断开连接

SignalR disconnecting every few minutes after the tab is backgrounded

我正在使用 SignalR 在 Vue.js 前端和 dotnet 后端之间进行通信。

当您在一段(看似随机的)时间后将前端选项卡设置为后台时,连接会断开。因为我使用的是自动重新连接,所以套接字随后会重新连接,但是直到选项卡重新聚焦之前,套接字将每隔几分钟继续断开连接,并将其置于重新连接循环中。

一些事情:

客户端代码非常基础:

 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);
    }

Chrome 今年早些时候进行了一次更新,当他们在大约 5 分钟后不在焦点时停止连接。 Nirbhay 评论的 issue/fix 实际上是针对 ASP.NET 版本 (2.4.2) 的,与 .NET CORE 不兼容。这是针对 .NET CORE 提出的问题 - github.com/dotnet/aspnetcore/issues/31079