gpt4 book ai didi

azure - SignalR 部署在云上时滞后? | .Net核心

转载 作者:行者123 更新时间:2023-12-02 07:58:34 26 4
gpt4 key购买 nike

上下文:我正在开发一个类似于 Uber 的系统,具体来说,服务器通过他们的应用程序协调两种类型的用户(例如司机和客户)之间的数据流通过连接到服务器的 SignalR 集线器。跟踪他们与服务器的连接状态是强制性的,并且该过程应该尽可能即时。

它们的连接状态通过 HashList<>() 进行管理每种类型的用户(2 个列表)。每当用户连接时(调用 OnConnected())就会将一个条目添加到列表中,而每当用户断开连接(调用 OnDisconnected())时,该条目就会从列表中删除。

这些HashLists是静态变量,遵循 this StackOverflow answer 联盟.

在我的计算机上本地调试时,哈希列表会立即修改,但是当在云服务(在我的例子中:Azure)上发布时,列表需要一些时间(大约 10 ~ 15 秒)才能更新。不过,获得与服务器的有效连接只需要大约 5 秒的时间。

现在,我知道连接到服务器不可能是即时的,这取决于几个因素,其中大多数因素超出了我的能力范围,但立即检测断开连接(或尽可能即时)将解决我的问题,我应该怎么办?我应该采取不同的方法吗?

PS:可以在客户端立即检测断开连接,但这对我来说没有帮助,因为我需要服务器中的已连接用户数据。

最佳答案

我相信您正在部署自己的 SignalR 服务。仅将内容存储在静态变量中是不够的,因为不能保证您的请求将转发到同一服务器。为了解决这个问题,您需要实现自己的底板模式并将状态保存在其他地方。(例如Azure Redis缓存)

更多信息:

https://learn.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-in-signalr

https://learn.microsoft.com/en-us/aspnet/core/signalr/redis-backplane?view=aspnetcore-3.1

PS:我强烈建议您使用 Azure SignalR 服务,而不是托管自己的服务。

关于azure - SignalR 部署在云上时滞后? | .Net核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60995720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com