Web场上的活动连接

时间:2017-10-09 12:45:28

标签: asp.net-core websocket network-programming

我正在尝试与websockets建立一个简单的聊天。我还在聊天中显示当前活跃用户,这里是问题的起点:我们使用的是Web场。

用户可以通过loadbalancer与服务器连接。当新连接到达服务器时,它会增加SQL database中的计数器,并通过rabbit MQ通知服务器场中的其他服务器。

所有其他服务器都会获取新数据并将该号码发回给其连接的用户。

如果用户断开连接,则会发生同样的情况:服务器减少SQL数据库中的计数器,并通过rabbit MQ所有其他服务器都知道这一点。

但是,当服务器死亡时会发生什么? 例如,如果有10个用户将与此服务器连接。当该服务器出现故障时,所有用户都将断开连接,但数据库中的用户不再更新。

获取Web场中活动用户总数的最佳解决方案是什么?并在此金额发生变化时通知用户?

提前致谢!

哦,顺便说一句,我们正在使用signalr

1 个答案:

答案 0 :(得分:1)

我认为处理与网格异步断开的节点的典型方法是实现心跳/保持活动机制。在这种情况下,心跳消息将位于服务器之间,并且还必须存在可访问的记录,其中哪些用户连接到哪个服务器。当服务器在一段时间内没有产生心跳时,所有其他服务器都可以更新其记录,并将与服务器关联的所有用户标记为已断开连接。

看起来您可能有一些关于如何跟踪用户的选项(SQL数据库或每个服务器侦听Rabbit MQ消息)。对于心跳,您可以自己实施或尝试查看是否可以使用laodbalancer的检测方法。