gpt4 book ai didi

signalr - SignalR 中的保证交付

转载 作者:行者123 更新时间:2023-12-03 22:09:26 34 4
gpt4 key购买 nike

我正在为中等负载的 Web 应用程序评估 SignalR。

我们期望大约 500 条消息/秒,这对 SignalR 来说应该不是问题。

但是,我们担心此解决方案的可靠性。我们的环境有一个有问题的网络,客户端失去网络连接约 30 秒的情况并不少见。是否有任何机制可以确保一旦客户端重新连接,它会获取在其离线时间发送的所有消息?

谢谢!

最佳答案

处理此问题的一种相当简单的方法是为每条消息分配一个 ID,该 ID 随每条消息而增加。客户端需要跟踪他收到的最新消息,并在重新连接时将该消息 ID 发送到服务器;然后服务器需要将所有错过的消息发送给客户端。实现起来应该相当简单。

编辑:
我认为您不必在服务器上维护任何真实状态 - 我认为几乎所有状态都可以推送到您的数据存储或您的客户端。客户端将发送它收到的最后一条消息的 ID 或时间戳:
$.connection.myHub.server.updateMe(lastMessageId);
您需要某种后备数据存储 - 所以当服务器收到 updateMe() 时消息,它将对数据库进行查询并提取 ID 大于它刚收到的行的所有行。它会将这些返回给客户端,作为其 UpdateMe() 的返回值的一部分。方法。然后它会尝试通过调用客户端上的方法,以与通常相同的方式传递任何新消息。

至于无状态是 SignalR 的目标:我无法对此发表评论,除了观察到我无法想象任何相当复杂的现实世界应用程序都不需要某种支持数据存储,无论是在 SignalR 上或其他一些框架(WCF、XSockets 等)差别不大。

关于signalr - SignalR 中的保证交付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14043641/

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