gpt4 book ai didi

c# - 是否有可能重复的 OnConnected 会在之前的 OnDisconnected 之前调用?

转载 作者:行者123 更新时间:2023-11-30 16:12:30 25 4
gpt4 key购买 nike

想象一下真空中的一些球形马:我失去了对客户端应用程序的控制,可能发生了一些错误。我试图立即重新进入集线器。OnConnected 启动速度是否比 OnDisconnected 快,并且我在服务器上出现了两次?

已编辑:

抱歉,我不是说 SignalR 库。我想如果我的应用程序不调用 stop() ,服务器将默认等待大约 30 秒。在调用 OnDisconnected 之前,我可以再次连接到服务器。不是吗?

最佳答案

您必须从客户端获取它,还要注意,如果您使用的是 TCP,则会发生以下情况:

TCP 确保您的数据包将按发送顺序到达。因此,让我们想象一下,在“马”撞击空间并且连接中断的同时,您的服务器正在发送下一个数据包来检查连接(如果您的服务器实现得足够好)。

这里,有两件事可能会发生:

  1. 客户已经康复,可以及时回复。这意味着连接出现问题的时间间隔足够小,以至于来自服务器的下一个数据包尚未到达。因此,在回答您的问题时,首先没有断开连接。
  2. 来自服务器的下一个数据包到达但客户端没有响应(连接被切断)。服务器会立即注意到这一点,引发 OnDisconnected 事件。如果客户端几乎在服务器注意到的同时恢复,那么它将启动另一个连接 (OnConnected)。

所以客户不可能再转两次。如果有的话,断开连接间隔将足够小,服务器不会首先注意到问题。

同样,另一个协议(protocol)可能会有不同的表现。但 TCP 旨在保证服务器和客户端之间建立良好的连接和通信。

值得一提的是,许多通信框架(如果不是全部)默认情况下隐式使用 TCP。

关于c# - 是否有可能重复的 OnConnected 会在之前的 OnDisconnected 之前调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22918400/

25 4 0
文章推荐: c# - 为远程 IIS 应用程序池标识配置 MSMQ 专用队列权限
文章推荐: javascript - 圆 Angular