gpt4 book ai didi

signalr - SignalR超时属性

转载 作者:行者123 更新时间:2023-12-03 14:06:35 25 4
gpt4 key购买 nike

我们遇到了此链接,该链接指定了不同的超时属性:
https://github.com/SignalR/SignalR/wiki/Configuring-SignalR

还有一篇出色的文章(When does a reconnect in signalR occour?),介绍了SignalR客户端和SignalR服务器之间如何断开连接和重新连接。

只是要重申以上帖子中的不同情况:

“集线器重新连接是在客户端脱机时发生的,然后在不久后重新获得连接。SignalR配置值在很大程度上决定了以下示例的时间戳,因此不必一字不漏地花费时间。

以下是一些示例及其涉及重新连接行为的结果(时间格式m:ss):

情况1

0:00-客户端连接到服务器,触发OnConnected

0:10-客户端由于ISP问题而失去连接(并意识到它失去了连接)

0:15-客户端重新获得连接

0:16-触发OnReconnected事件

情况二

0:00-客户端连接到服务器,触发OnConnected

0:10-客户端由于拉扯以太网电缆而失去连接(未意识到已断开连接)

0:15-客户端重新获得连接

这里可能发生两件事

答:0:16-什么也没发生,客户端继续之前的连接

B:0:〜45-客户端意识到其断开连接*

B:0:46-客户端转换为重新连接状态

B:0:47-客户端成功重新连接,并且触发了OnReconnected事件。

情况3

0:00-客户端连接到服务器,触发OnConnected

0:10-客户端由于拉扯以太网电缆而失去连接(未意识到已断开连接)

0:〜45-客户端意识到其断开连接*

0:46-客户端转换为重新连接状态

1:15-服务器确定客户端已离开太久,然后忘记了这一点,排队一个“断开连接”命令,以便客户端在稍后重新连接时可以接收。 ***

1:15-触发OnDisconnect 1:16-客户端重新获得连接

1:17-客户端进行“软”重新连接(不会触发OnReconnected)

1:18-客户端检索“断开连接”命令

1:19-客户端呼叫“停止”并进行软断开连接(不会触发OnDisconnected)

情况4

0:00-客户端连接到服务器,触发OnConnected

0:10-客户端由于拉扯以太网电缆而失去连接(未意识到已断开连接)

0:〜45-客户端意识到其断开连接*

0:46-客户端转换为重新连接状态

1:15-服务器确定客户端已离开太久,然后忘记了这一点,排队一个“断开连接”命令,以便客户端在稍后重新连接时可以接收。 ***

1:15-触发了OnDisconnect 1:30-客户端停止尝试重新连接(尝试时间过长)**

1:30-客户端转换为断开状态


由于客户端保持活动状态检查:用于确定客户端由于缺少保持活动状态而脱机的时间。不用于长轮询运输


**由于客户端断开连接超时:用于确定客户端何时重新连接了太长时间,以及服务器在这段时间内是否忘记了客户端

***由于服务器断开连接超时:用于确定何时应该忘记客户端。一旦在服务器上将连接标记为无效后,这个时间跨度就会开始累积。最终,服务器在客户端主题的断开连接队列中排队,该命令告诉客户端(如果重新连接)它需要开始新的连接。清理主题后,该命令将从服务器中消失。”



我们发现,.NET SignalR客户端和ASP.NET MVC SignalR服务器之间经常断开连接并重新连接(上面的1和2),并且断开连接也不会导致重新连接(上面的3和4)。我们知道正在使用ServerSentEvents协议。

很难知道我们需要调整(增加或减少)哪些超时属性:


减少断开连接和重新连接的次数。
完全不会出现在情况3和4中。


这里要注意的重要一点是,我们的.NET SignalR客户端实际上是Windows服务,一直连接到服务器。

我们目前仅保留默认值,即:


ConnectionTimeout = 110秒
DisconnectTimeout = 30秒
KeepAlive = 30秒


另外,我们正在使用SignalR 1.0.1。

最佳答案

您的超时设置正确。在当前版本中,.net客户端没有客户端保持活动状态,以确保客户端保持连接性。

在下一个版本中,您将拥有一个.net客户端。如果您愿意使用项目的开发版本,则该功能当前可在dev分支https://github.com/SignalR/SignalR/tree/dev上使用。

另外,作为参考,以下是与您看到的https://github.com/SignalR/SignalR/issues/741相关的问题。

关于signalr - SignalR超时属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15537474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com