假设我的网络连接中断了几秒钟,我错过了一些SignalR服务器推送的消息。
当我重新获得网络连接时,我错过的消息丢失了吗?还是signalR处理它们并在重新连接时将它们推出?
如果它无法处理错过的消息,那么建议的确保一致性的方法是什么?
答案 0 :(得分:9)
以下是一些想法:
如果您不是每秒发送大量邮件,请考虑在邮件本身中不发送任何数据。相反,该消息只是对客户端的“ping”,告诉他们在可能的情况下获取服务器数据。正如你所说,将它与定期民意调查相结合,你可以放心,你不会错过任何信息。他们可能会被推迟。
如果您要快速发送大量邮件,那么如何为每个邮件添加顺序ID?想一想SQL Identity专栏。您的客户需要跟踪收到的最新ID。网络重新连接后,客户端可以询问自[Last ID]以来的所有消息。如果收到的ID的ID与最近收到的ID不相邻,则表示存在断开连接,并且可以向服务器询问缺少的信息。