asp.net – 跟踪SignalR连接ID以查看它们是否真的存在
发布时间:2020-12-16 06:48:58 所属栏目:asp.Net 来源:网络整理
导读:目前,我将所有连接用户的连接ID存储在我的数据库中,方法是将它们映射到实际的应用程序用户.我在这里做的很简单:在触发OnConnected事件时,我将连接ID??添加到数据库.然后,当触发OnDisconnected事件时,我从数据库中删除该连接. 但是,在某些情况下(例如,当进程
目前,我将所有连接用户的连接ID存储在我的数据库中,方法是将它们映射到实际的应用程序用户.我在这里做的很简单:在触发OnConnected事件时,我将连接ID??添加到数据库.然后,当触发OnDisconnected事件时,我从数据库中删除该连接.
但是,在某些情况下(例如,当进程终止时等),我没有得到断开连接事件.这使得我的连接表不可靠,因为我无法确定用户是否在一个或多个客户端上连接.例如,这是我的OnDisconnected方法上的一段代码: HubConnection hubConnection = _hubConnectionRepository.GetAll() .FirstOrDefault(conn => conn.ConnectionId == connectionId); if (hubConnection != null) { _hubConnectionRepository.Delete(hubConnection); _hubConnectionRepository.Save(); } if (!_hubConnectionRepository.GetAll().Any(conn => conn.UserId == user.Id)) { Clients.Others.userDisconnected(username); } 如您所见,我在删除他/她当前的连接后检查是否有与该用户关联的任何其他连接.根据具体情况,我向所有连接的客户端广播消息. 我想要的是这样的:能够使用一组连接ID轮询SignalR系统并找回断开的连接ID,以便我可以从数据库内的连接列表中删除它们.据我在与大卫福勒的谈话中记得,今天这是不可能的,但在这种情况下,首选方法是什么? 解决方法
这只是一个想法.
在服务器上: 在客户: 在服务器上:void pingResponse(){Context.ConnectionId; //更新数据库} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net-mvc – 在ASP.NET MVC中的JSON属性中返回
- MvcBuildViews真实与实体框架在ASP.NET MVC 2
- asp.net – LinkBut??ton不会在click()上调用
- asp.net-core – 使用asp.net核心MVC进行任何操作
- 双应用程序域在ASP.NET 4应用程序
- asp.net-mvc – ASP.NET MVC Gotcha?失意
- asp.net-mvc-2 – EF CTP5错误:对象名称无效
- 验证 – 想知道为什么DisplayName属性在被覆盖属
- ASP.Net MVC与Classic ASP(不是ASP.Net – 原始A
- asp.net-mvc – MVC5 Html.RenderAction与不同的
热点阅读