SignalR Hub组不适用于长轮询

时间:2012-12-18 14:04:34

标签: asp.net-mvc-3 .net-4.0 signalr signalr-hub

我有一个Web应用程序(.NET 4.0 ASP.NET MVC3),它使用带有集线器和持久连接的SignalR(1.0.0 alpha 2)。

使用集线器,我使用组向一些客户端发送推送通知。

问题是当远程访问服务器时,默认为长池,只有持久连接才有效。对于集线器,事件发生在服务器上,但我的回调未在客户端调用。它在本地工作,但它使用SSE。

我发现分组客户端和长池传输的组合导致了问题。只要我拿到VS2012,我就会尝试调试SignalR。

为了证明这一点,我刚刚修改了这个chat example,因此使用了一个硬编码组并且强制使用了长池 - 它在我的机器(IISExpress)和服务器(IIS 7.5)上都不起作用。只要您使用不同的传输或

,聊天就会起作用
context.Clients.All.addMessage(message);

而不是

context.Clients.Group(groupName).addMessage(message);

Here是一个示例项目。

这是SignalR中的错误还是我遗漏了什么?

我的部署服务器SignalR上的任何想法都会回退到端口80上的长轮询,但如果我的站点配置在不同的端口上,则使用SSE?

1 个答案:

答案 0 :(得分:4)

您需要启用自动重新加入群组。

将此贴在您的启动代码中:

GlobalHost.HubPipeline.EnableAutoRejoiningGroups();