微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

某些客户端的 ASP.NET Core 3.1 SignalR 连接在 2 分钟后重新连接

如何解决某些客户端的 ASP.NET Core 3.1 SignalR 连接在 2 分钟后重新连接

我有一个带有 signalr 的 asp.net core 3.1 项目。我的一些用户似乎每 2 分钟断开/重新连接他们的 websockets 信号器连接:

logs of 2 minute reconnections

这张图表可以更好地形象化:

2 minute reconnections chart

我知道认情况下,由 asp.net 控制的 websocket 有 2 分钟的 keepalive 超时 - 但据我所知,signalr 也有它自己的 ping/keepalive 消息,专门用于避免 websocket 超时 - 如果我打开我的我可以清楚地看到那些:

websockets keepalive messages

那么问题是:为什么有些人的连接会在 2 分钟后断开?

编辑 1:删除了我的 mac/linux 理论,因为我在日志中发现了一些 Windows 客户端

编辑 2:我设法从受影响的客户端之一获得控制台日志:

console log from client

解决方法

这是由于 ASP.NET 核心服务器中的 KeepAlive 设置默认为 2 分钟。

Documentation here !

添加乒乓机制以保持 websocket 连接打开或提高此设置。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。