【问题标题】:SignalR Hub's Groups dont work with long pollingSignalR Hub 组不适用于长轮询
【发布时间】:2012-12-18 14:04:33
【问题描述】:

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

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

问题是,当远程访问服务器时,它默认为长池,并且只有持久连接才能工作。使用集线器,事件发生在服务器上,但我的回调没有在客户端调用。虽然它使用 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?

【问题讨论】:

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


    【解决方案1】:

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

    在你的启动代码中粘贴这个:

    GlobalHost.HubPipeline.EnableAutoRejoiningGroups();

    【讨论】:

    • 谢谢你,约翰! + 将 SignalR 更新为 rc1 解决了问题(它不适用于 alpha 版本)。我在哪里可以获得有关此的更多信息,signalR 的 wiki 中没有提到任何内容,文档很差......关于端口的第二个问题呢,有什么想法吗?
    • 几天前我碰巧偶然发现了同样的答案。自从更改为 ASP.Net SignalR 以来,文档是不完整的,因为那里已经存在了多少示例等。
    • 在 SignalR 1.0 中,EnableAutoRejoiningGroups 已从 HubPipeline 中移除,因为它现在默认开启。 github.com/SignalR/SignalR/blob/master/ReleaseNotes.md
    猜你喜欢
    • 2012-12-09
    • 2013-05-30
    • 2012-10-11
    • 2019-01-28
    • 2013-07-16
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2014-01-23
    相关资源
    最近更新 更多