【问题标题】:SignalR Web Sockets IIS8 Server 2012 - "Not a web socket request"SignalR Websockets IIS 8 Server 2012 - “不是 websocket 请求”
【发布时间】:2013-01-09 02:46:26
【问题描述】:

我有一个在 IIS8/Windows Server 2012 上使用 SignalR(rc1) 的站点。它运行得相当不错,只是它似乎正在回退到 serverSentEvents,而且我想要 Web 套接字真的很糟糕。

我看到一个带有 200 响应的信号器/协商 GET: {"Url":"/signalr","ConnectionId":"b274f430-7d19-40b8-b448-4ea346042547","KeepAlive":15.0,"DisconnectTimeout":40.0,"TryWebSockets":true,"WebSocketServerUrl":null, "协议版本":"1.1"}

然后我看到一个带有 500 的信号器/连接 GET 和一个异常“不是网络套接字请求”:

www.xxxxxx.com/signalr/connect?transport=webSockets&connectionId=56dc6212-387c-43b2-8555-6f8787c9cf17&connectionData=%5B%7B%22name%22%3A%22orderhub%22%7D%2C%7B%22name% 22%3A%22systemhub%22%7D%5D&tid=6

尝试直接加载链接会得到以下 ysod:

然后它开始使用 serverSentEvents!有任何想法吗?提前致谢。

【问题讨论】:

  • 你使用的是什么版本的火狐?显然你不能点击链接并期望它是一个 websocket 请求......
  • Firefox 18 和 chrome 23。查看 chrome 的网络选项卡时,连接请求根本没有调试或响应信息。在 Firefox 中查看时,它显示不是 websocket 500。
  • 在浏览器中查看它永远不会显示为 websocket 请求,因此这是意料之中的。但是 chrome 23 和 firefox 18 应该可以正确使用 websocekts。有公开链接吗?
  • 我有一个公共站点,但它受密码保护。我刚刚为您创建了一个帐户。我在胡言乱语的房间里。我可以在那里发送用户/密码吗?
  • 我们的服务器位于负载均衡器后面。负载平衡器仅接受端口 80 上的 HTTP 请求。我已更新负载平衡器以接受端口 80 上的所有类型的 TCP 连接。结果:WebSockets 现在可以在我们的站点上使用!

标签: .net signalr


【解决方案1】:

我们的服务器位于负载均衡器后面。负载平衡器仅接受端口 80 上的 HTTP 请求。我已更新负载平衡器以接受端口 80 上的所有类型的 TCP 连接。

结果:WebSockets 现在可以在我们的网站上运行了!

【讨论】:

    猜你喜欢
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2016-11-28
    相关资源
    最近更新 更多