【问题标题】:ASP.NET Core 3.1 SignalR connections reconnect after 2 minutes for some clients对于某些客户端,ASP.NET Core 3.1 SignalR 连接在 2 分钟后重新连接
【发布时间】:2021-07-16 02:51:35
【问题描述】:

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

这张图表更好地显示了这一点:

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

所以问题是:为什么有些人的联系会在 2 分钟后断开?

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

编辑 2:我设法从一个受影响的客户那里获得了控制台日志:

【问题讨论】:

  • 这可能是相关的:github.com/SignalR/SignalR/issues/4536
  • 也许......这些在 5 分钟后断开,而不是 2 :( 链接的 repo 也适用于旧的 asp.net 信号器,而不是 asp.net 核心信号器。
  • 当然,但真正的问题是chrome现在引入了这个,它给每个人带来了各种各样的问题。您是否可能在另一个浏览器中进行测试以查看是否也会发生这种情况?如果不是,那么你排除它。测试,比如在 Firefox 中
  • 基于用户代理,它发生在 chrome 和 safari 中

标签: c# asp.net-core websocket timeout signalr


【解决方案1】:

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

Documentation here !

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 2018-08-24
    • 2017-05-26
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多