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,则缓存将不再有效。