【问题标题】:SignalR 2.2.0 WebSocket error connecting to hubSignalR 2.2.0 WebSocket 错误连接到集线器
【发布时间】:2015-09-09 18:06:17
【问题描述】:

我有一个已添加 SignalR 的 ASP.Net MVC 应用程序。在遵循“Getting Started”教程(当然,因为它在我的应用程序中进行了修改)之后,我让它在 localhost 上运行。但是,一旦它在生产环境中,我会收到以下错误:

到 'ws://xxxxx/signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=xxxxx' 的 WebSocket 连接失败:在收到握手响应之前连接已关闭。

我可以访问 /signalr/hubs(我得到一个 js 文件)。关于为什么会发生这种情况的任何想法?

【问题讨论】:

    标签: c# asp.net-mvc-4 signalr signalr-hub


    【解决方案1】:

    这可能是因为您的 Web 服务器不支持 WebSockets(例如 IIS 7.5。也可能是因为您使用的是 ARR 之类的“代理”服务器,但它不能“路由”WebSocket 请求。

    我会尝试做的第一件事是禁用 SignalR 上的 WebSockets,就像调试工具一样。方法如下:SignalR - How do I disable WebSockets

    如果您的问题仍然存在,这是一个一般的 SignalR 问题,但至少您会遇到更具体的错误。如果问题停止,现在您知道这是服务器问题。

    【讨论】:

    • 好的,这样就消除了我的错误。现在我只需要弄清楚为什么它似乎没有进行实际调用。谢谢!
    • 我很高兴你明白了这一点。您使用的是什么网络服务器?你在使用集群吗?
    • 我们使用的是 IIS 7 - 这就是我所知道的。我无权访问服务器本身,因此我必须让其他人为我进行更改/上传。不确定它是否是一个集群,但我猜它不是。
    • 使用长轮询传输集,我基本上在通话的“内容下载”部分的生产中超时。查看 chrome devtools - 停滞 0.191 毫秒,发送请求 0.080 毫秒,等待(ttfb)42.949 毫秒,内容下载 1.9 分钟。在本地运行它需要不到一秒钟的时间来完成所有事情并产生结果(我知道它应该返回什么)
    • 我知道您已将问题标记为已回答,但以防万一其他人遇到此问题,您的问题似乎是您使用的是 IIS7。受支持的平台特别声明您需要 IIS8 来支持 Web 套接字。最有可能发生的情况是 SignalR 正在尝试使用 Web 套接字,但会自动降级连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 2020-01-06
    • 2016-10-29
    • 2015-07-09
    • 1970-01-01
    相关资源
    最近更新 更多