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

lfapxunr  于 2023-01-17  发布在  .NET
关注(0)|答案(2)|浏览(193)

我有一个使用signalr的www.example.com core 3.1项目,我的一些用户似乎每隔2分钟就会断开/重新连接他们的websockets signalr连接:asp.net core 3.1 project with signalr. Some of my users seem to disconnect/reconnect their websockets signalr connection every 2 minutes:

这一点在下面的图表中更加直观:

我知道在默认情况下,www.example.com控制的websockets上有2分钟的keepalive超时-但据我所知,signalr也有自己的ping/keepalive消息,专门用于避免websockets超时-如果我打开我的,我可以清楚地看到这些:asp.net - but as far as I know signalr also has it's own ping/keepalive messages specifically to avoid the websocket timeout - if I open mine I can see those clearly:

所以问题是:为什么有些人的连接会在两分钟内中断?
编辑1:删除了我的mac/linux理论,因为我在日志中发现了一些windows客户端
编辑2:我设法从一个受影响的客户端的控制台日志评分:

lsmepo6l

lsmepo6l1#

这是由于在ASP.NET核心服务器中KeepAlive设置默认为2分钟。
Documentation here !
添加乒乓机制以保持WebSocket连接打开,或者提高此设置。

wj8zmpe1

wj8zmpe12#

试试看:

var connection = new signalR.HubConnectionBuilder()
    .withUrl('<YOUR PATH>')
    .withAutomaticReconnect()
    .build();

相关问题