我们创建了一个自托管 SignalR
服务器,我们的 WPF 桌面应用程序正在连接到该服务器。我们只是在做登录-注销管理,一切都很简单而且有效。但是过了一段时间,通常是 2-3 小时,一半的客户从在线客户列表中消失了。
看起来,OnDisconnected
事件在服务器上触发以进行连接,即使它们没有关闭。在 OnDisconnected
事件之后,这些连接仍然可以发送和接收数据。
是否有任何情况导致连接未关闭时在服务器上触发 OnDisconnected
事件?
最佳答案
Is there any scenario that causes to OnDisconnected event triggered on server when connection is not closed?
是的。如果连接超时,首先断开连接然后重新连接(如果客户端没有明确关闭连接)。
public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled) { if (stopCalled) { Console.WriteLine(String.Format("Client {0} explicitly closed the connection.", Context.ConnectionId)); } else { Console.WriteLine(String.Format("Client {0} timed out .", Context.ConnectionId)); } return base.OnDisconnected(); }
如您所见。如果发生显式断开连接(stopCalled
为真),则客户端肯定断开连接并且不会发生重新连接。
如果客户端确实没有断开连接,断开连接后可能会像您的情况一样发生重新连接。
检查 here更多细节
关于c# - 即使 SignalR SelfHost 服务器上的连接未关闭,是否可能会触发 OnDisconnected 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36448353/