asp.net-core - Chrome Mobile 在后台时 Blazor 服务器断开连接

标签 asp.net-core mobile signalr blazor-server-side

我开发了一个在桌面上运行良好的 blazor 服务器应用程序,现在我在移动平台上测试她。

当我将浏览器置于后台时,我遇到了 signalR 连接问题。 当我回去时,如果速度足够快,我会收到消息 “正在尝试重新连接到服务器”x/8,大约 15 秒后重新连接(这太多了),如果 5 分钟后我完全断开连接,我必须重新启动应用程序。

我找到了一些关于此的文档,但没有一致的。由于 blazor,客户端配置和事件(在 js 中)似乎与经典的 signalr 客户端不同,并且服务器在不同的超时之间丢失。

我尝试找到一种方法来配置服务器和客户端以管理“休眠”连接(如果我在 20 分钟后断开连接则可以,但我希望至少能够重新连接直到 20 分钟不活动),但这真的很难测试,因为我无法在我的笔记本电脑上重现开发中的这种行为。

我在网上看到一些建议 make document.location.reload() 的解决方案

Blazor.defaultReconnectionHandler._reconnectCallback = function(d) {
    document.location.reload(); 

但这对我来说不是解决方案,因为我不想在 session 中丢失所有内容。

感谢您的建议和帮助!

最佳答案

对于那些陷入此类问题的人,我能够通过使用此处描述的信号器选项来解决这个问题:https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/signalr?view=aspnetcore-5.0&pivots=server

实际上,这并不是真正的移动问题,因为我将笔记本电脑置于休眠状态超过 3 分钟时也有同样的行为。

3 分钟的有效期来自这个参数 DisconnectedCircuitRetentionPeriod 3 分钟断开的电路在被拆除之前保留在内存中的最长时间。

我只是增加了这个参数的时间,当手机/笔记本电脑退出 sleep 状态时它能够重新连接。

blazor 文档对此不是很清楚

关于asp.net-core - Chrome Mobile 在后台时 Blazor 服务器断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68654268/

相关文章:

c# - 如何在缓存中存储数据?

asp.net-core - 尝试在 Azure 函数中使用依赖注入(inject)时出现奇怪的异常

html - Bootstrap 3 选项菜单消失

wordpress - 为什么我的 SSL 在 WWW 移动设备上不起作用?

c# - SignalR 似乎正在使用 Windows 身份验证而不是使用匿名身份验证

c# - LinkGenerator GetPathByPage 对于区域页面返回 null

asp.net-core - 如何在asp.net core web API中使用MimeMessage发送带有附件的电子邮件?

java - 用于 Selenium 测试的 Chrome 移动模拟器 - 无法使用所有设备

asp.net - ASP Core 3 上的 JWT + SignalR 导致 401 未经授权

signalr - 使用共享的长时间运行进程的负载平衡 Web API 的最佳实践?