SignalR可以处理错过的消息吗?

时间:2012-04-23 14:03:59

标签: signalr

假设我的网络连接中断了几秒钟,我错过了一些SignalR服务器推送的消息。

当我重新获得网络连接时,我错过的消息丢失了吗?还是signalR处理它们并在重新连接时将它们推出?

如果它无法处理错过的消息,那么建议的确保一致性的方法是什么?

  • 定期(2-3分钟)轮询以检查服务器数据?
  • 以某种方式检测客户端网络丢失并进行ajax调用以获取网络恢复数据?
  • 别的什么?

1 个答案:

答案 0 :(得分:9)

以下是一些想法:

如果您不是每秒发送大量邮件,请考虑在邮件本身中不发送任何数据。相反,该消息只是对客户端的“ping”,告诉他们在可能的情况下获取服务器数据。正如你所说,将它与定期民意调查相结合,你可以放心,你不会错过任何信息。他们可能会被推迟。

如果您要快速发送大量邮件,那么如何为每个邮件添加顺序ID?想一想SQL Identity专栏。您的客户需要跟踪收到的最新ID。网络重新连接后,客户端可以询问自[Last ID]以来的所有消息。如果收到的ID的ID与最近收到的ID不相邻,则表示存在断开连接,并且可以向服务器询问缺少的信息。