应用程序在后台运行 10 分钟以上后,Microsoft.AspNet.SignalR.Client 出现应用程序挂起/崩溃的问题

问题描述 投票:0回答:1

我的 ASP.NET SignalR 客户端遇到问题,在后台运行大约 20 分钟后重新打开应用程序时,客户端尝试连接时会挂起。这最终会导致应用程序冻结或完全崩溃。

以下是相关代码片段:

if (SignalRClient != null)
{
    await Connect(_chatGuid.ToString());
}
await SignalRClient.JoinGroup(_chatGuid.ToString(), App.entityClientGuid.ToString(), App.oSType);

这两种方法都执行以下操作:

 public async Task Connect()
    {
        try
        {
            await _connection.Start();
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Failed to connect: {ex.Message}");
            await Reconnect();
        }
    }

public async Task JoinGroup(string roomName, string entityGuid, string deviceType)
    {
        try
        {
            await _proxy.Invoke("JoinGroup", roomName, entityGuid, deviceType);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Failed to join: {ex.Message}");
        }
    }

我在应用程序中使用 Microsoft.AspNet.SignalR.Client 进行实时通信。在正常情况下它可以完美运行,但当应用程序在后台处于非活动状态大约 20 分钟时就会出现问题。重新打开应用程序后,SignalR 客户端似乎难以连接,导致应用程序无响应或崩溃。

我已尝试调试该问题,但无法查明确切原因。应用程序长时间处于后台后,连接过程似乎会卡住或超时。

这可能与 SignalR 中的某种超时设置有关,或者可能与网络相关问题有关?任何有关如何排查和解决此问题的见解或建议将不胜感激。谢谢!

xamarin.forms signalr
1个回答
0
投票

可能与浏览器的更改有关,特别是针对 Chrome。 Websocket 连接在一段时间不活动后会被强制关闭。评论建议 5 - 7 分钟范围。

您没有注明您使用的是哪个版本,但是这个问题已在 v2.4.2 中修复(尽管目前最新的是 v2.4.3)。

https://github.com/SignalR/SignalR/issues/4536

© www.soinside.com 2019 - 2024. All rights reserved.