11

我正在考虑更新现有站点以使用 SignalR。我的网站轮询第三方服务以获取数据更改,对其进行一些魔术,客户每隔几分钟对其进行轮询一次,以通过任何更新刷新他们的视图。

SignalR 似乎是消除客户端轮询的好方法,但我想知道 SignalR 如何处理断开和重新连接的连接,尤其是对于可能已暂停一段时间的移动 Web 应用程序。它会自动协商并排队同时错过的任何更新,还是在这些情况下客户端需要从头开始重新同步?我查看但找不到任何关于此的文档,因此将不胜感激。

4

2 回答 2

10

所有这一切都是可能的,因为客户端会跟踪它看到的最后一条消息 ID。如果它碰巧错过了消息,它将在下次返回服务器时获取这些消息(询问自上次看到的所有消息)。

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

当 SignalR 将内容存储在内存中时,您甚至可以自己将消息保存在自己的应用程序逻辑中。这真的取决于应用程序。

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

这些细节不是很具体,但您想要做的一切都可以使用 SignalR。

于 2011-10-12T16:12:23.013 回答
0

阅读SignalR 中的理解和处理连接生命周期事件,尤其是以下部分:

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

于 2015-02-27T15:47:49.693 回答