【发布时间】:2020-04-02 15:53:03
【问题描述】:
背景:我正在开发一个类似于 Uber 的系统,具体来说,服务器通过他们的应用程序在两种类型的用户(例如司机和客户端)之间调解数据流通过连接到服务器的 SignalR 集线器。跟踪他们与服务器的连接状态是强制性的,并且该过程应尽可能即时。
他们的连接状态通过HashList<>() 为每种类型的用户(2 个列表)进行管理。只要用户连接(调用OnConnected()),就会向列表中添加一个条目,而只要用户断开连接(调用OnDisconnected()),就会从列表中删除该条目。
这些HashLists 是静态变量,遵循this StackOverflow answer 的联盟。
在我的机器上进行本地调试时,HashLists 会立即被修改,但是当在云服务(在我的情况下:Azure)上发布时,列表需要时间(大约 10 到 15 秒)才能更新。但是,获取与服务器的有效连接只需要大约 5 秒。
现在,我知道连接到服务器不可能是即时的,这取决于几个因素,其中大多数因素是我无法企及的,但立即(或尽可能即时)检测断开连接可以解决我的问题,我该怎么办?我应该采取不同的方法吗?
PS:可以在客户端立即检测断开连接,但这对我来说无济于事,因为我需要服务器中连接的用户数据。
【问题讨论】:
标签: azure .net-core signalr cloud static-variables