SignalR 广播消息在停止/启动后重复

Posted

技术标签:

【中文标题】SignalR 广播消息在停止/启动后重复【英文标题】:SignalR Broadcast Messages Duplicated after Stop/Start 【发布时间】:2014-01-25 10:41:36 【问题描述】:

每次我停止/启动连接时,都会复制集线器发送给客户端的消息。

如果我执行这个序列: $.connection.hub.stop() $.connection.hub.start() ...

并从服务器集线器向客户端发送一条消息,该消息被接收一次。 如果我重新执行上述序列,我将收到两次相同的消息,即使服务器集线器调用 Clients.Client(Context.ConnectionId).acceptMsg(msg); 只有1次。对于具有 connectionId 的同一消息,在客户端调用 acceptMsg 两次。 我使用 Clients.All.acceptMsg(msg) 得到相同的结果

对于每个后续的停止/启动,消息会进一步复制;第三次发送三条消息,第四次发送四条消息,以此类推。

我尝试将停止和启动的调用分开几分钟,但没有任何区别。

其他详细信息:javascript 客户端、SignalR v2.0.1、Chrome 版本 31.0.1650.63、ASP.Net 4.5。 SignalR 在我的测试中使用长轮询,我允许默认协商。在 SignalR 跟踪中,“SignalR:中止 xhr 请求”。在停止之后,开始之前观察。

知道是什么导致我的消息在这种情况下被复制吗?

【问题讨论】:

【参考方案1】:

这是一个已知问题,已在即将发布的 2.0.2 版本中修复。这是供参考的 GitHub 问题:https://github.com/SignalR/SignalR/issues/2595

【讨论】:

这看起来像。谢谢!

以上是关于SignalR 广播消息在停止/启动后重复的主要内容,如果未能解决你的问题,请参考以下文章

SignalR:没有持久通知的服务器广播

SignalR的简单实现消息广播

使用 SignalR 集线器向特定连接用户广播消息

SignalR 自托管 Windows 服务,监听消息

如何在 hubpipleline 之外使用 SignalR 集线器实例

SignalR 2.2 客户端未收到任何消息