Signalr 信号机断开

Signalr 信号机断开,signalr,signalr-hub,Signalr,Signalr Hub,我正在编写一个应用程序,并将所有用户连接存储在一个并发字典中 ConcurrentDictionary<string, User> _users = new ConcurrentDictionary<string, User>(); ConcurrentDictionary\u用户=新建ConcurrentDictionary(); e、 g。 我已经在我的集线器上实现了IDisconnect接口,当用户断开连接时,我将从字典中删除他们 我想知道断开连接的方法到底有

我正在编写一个应用程序,并将所有用户连接存储在一个并发字典中

ConcurrentDictionary<string, User> _users = new ConcurrentDictionary<string, User>();
ConcurrentDictionary\u用户=新建ConcurrentDictionary();
e、 g。

我已经在我的集线器上实现了IDisconnect接口,当用户断开连接时,我将从字典中删除他们

我想知道断开连接的方法到底有多可靠? 它是否捕获了用户可以断开连接的所有不同方式? 我不希望字典无限期地增长

我在考虑也许有一个计时器定期遍历字典,删除最近没有任何活动的用户


这有必要吗?我可以依赖断开连接的方法吗?

如果它没有触发,那就是一个bug,你应该这样做。在这个时候

请注意,不同的传输具有不同的断开连接检测逻辑,因此,根据用户正在使用的传输,您将看到断开连接何时触发的不同模式,但它最终应为所有传输触发。

签出,有以下设置:

断开超时 持久连接 &热节拍间隔

这些都可以用来帮助你维护字典

根据我的经验,一个优雅的断开连接似乎在signalR上非常有效(win应用程序仍然存在问题),如果它在几分钟内错误地断开连接,连接将超时,断开连接方法将触发,并将其从字典中删除,如Drew所说


您可以创建一个方法,向所有客户端发送消息并记录返回的连接ID,然后删除任何旧的条目,但实际上,disconnect方法本身是有效的,如果您确实需要密切关注连接,我只会实现心跳间隔

即使应用程序池已被回收,断开连接是否仍会触发?我的问题是知道何时使缓存无效。快速应用程序池不应使缓存无效。但是,如果服务器停机时间超过DisconnectTimeout KeepAlive interval,则缓存将不再有效。