我有一个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?
答案 0 :(得分:4)
您需要启用自动重新加入群组。
将此贴在您的启动代码中:
GlobalHost.HubPipeline.EnableAutoRejoiningGroups();