连接不可靠或已暂停和重新连接的 SignalR?



我正在考虑更新现有的网站使用SignalR。我的网站对第三方服务的数据更改进行轮询,在它上面做了一些魔法,客户端每隔几分钟轮询一次,以刷新他们的视图与任何更新。

SignalR似乎是一种消除客户端轮询的好方法,但我想知道SignalR如何处理丢弃的&重新连接,特别是关于移动网络应用程序,可能已经暂停了一段时间。它是否会自动协商并将在此期间错过的任何更新排队,或者在这些情况下客户端是否需要从头开始重新同步?我看了,但找不到任何关于这方面的文档,所以指导将不胜感激。

所有这些都是绝对可能的,因为客户端跟踪它看到的最后一个消息id。如果它碰巧错过了消息,它将在下一次返回服务器时获得这些消息(请求自上次看到的消息以来的所有消息)。

默认情况下,SignalR的服务器端将消息存储在内存中(并且每隔几秒钟就会清除这些消息),但是如果您考虑客户端离线并赶上,您可以将其更改为持久存储(参见IMessageStore)。

你甚至可以在你自己的应用逻辑中持久化消息,而SignalR在内存中存储内容。这完全取决于应用程序。

我们还没有为移动客户端添加任何特殊的支持,但是您可以将消息id保存在移动客户端所需的任何本地存储中。

这些细节不是很具体,但是你想做的都可以用SignalR。

阅读SignalR中的理解和处理连接生命周期事件,特别是这些部分:

  • 如何连续重新连接-需要从断开连接状态恢复;
  • 如何通知用户断开连接-这样你的应用程序不仅可以通知用户,还可以检测状态变化(断开连接,重新连接,重新连接)以其他方式刷新你的应用程序的状态。

该文档写于2014年,基本上淘汰了2011-2012年期间许多错误或不完整的StackOverflow signalr相关问题/答案。

最新更新