客户端导航时SignalR消息丢失

时间:2012-03-12 11:15:20

标签: signalr

我已经成功实施了SignalR。

我正在使用它来显示网站上用户之间的初始对话,因此当想要与其他人聊天时,会使用SignalR发送一条简单的消息。

除了一种情况外,这种方法很有效。如果请求是在应该发送请求的同时发送新页面请求,例如导航网站,则消息将丢失。

我可以看到消息在InProcMessageBus中30秒后过期,但我不认为这是问题,因为我在我的机器上测试并且页面加载最多需要1-2秒。

那么,这实际上是设计的吗?或者我做错了吗?

感谢。

1 个答案:

答案 0 :(得分:2)

这是一种设计。当用户创建新连接时,默认情况下会获得新的clientid。除非您已定义自己的IConnectionIdFactory,否则这可能是问题的原因。如果您想确保客户端始终获得相同的ID,您可以创建自己的实现,并将其设置为:

DependencyResolver.Register(typeof(IConnectionIdFactory), () => new CustomIdFactory());

SignalR的可扩展性 - https://github.com/SignalR/SignalR/wiki/Extensibility

clientID的示例工厂替换:http://www.kevgriffin.com/maintaining-signalr-connectionids-across-page-instances/