1

我正在使用 xsockets 在本地运行我的 ASP.NET Web API 应用程序,没有任何问题。当我将项目发布到 Azure 时,它​​不会连接。我为 Azure 启用了 websockets 并在客户端调整了 xsockets url

来自:conn = new XSockets.WebSocket("ws://localhost:50838/api/Chat");

to: conn = new XSockets.WebSocket("ws://.azurewebsites.net/api/Chat");

有什么建议么?

阿诺德

4

2 回答 2

1

XSockets 默认传入子协议“XSocketsNET”,出于某种原因,Azure 在响应中将其过滤掉。它在仿真中运行良好,但在 Azure 上,子协议已被删除。这会导致 Chrome 出现错误,因为 chrome 检查子协议并给出以下错误:

WebSocket connection to 'ws://xmvc.azurewebsites.net/Home' failed: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received

它在其他不执行此检查的浏览器中工作正常。我已经在这个在 Azure 网站上运行 XSockets 的示例站点上尝试了 IE10 和 Firefox

在我看来,Chrome 正在做正确的事情,而 Azure 有一个错误。

编辑:请注意 Azure 网站限制 websocket 连接的事实!!!免费站点:5 个连接 共享站点:35 个连接 标准站点:350 个连接

于 2014-03-30T13:33:01.977 回答
1

根据微软使用 WebSockets over Wss / Https 的说法,我刚刚做了一个测试,结果还是一样。

如果您在握手期间传递来自服务器,则很可能会从响应事件中删除“不必要的”子协议标头。

那么,在使用 Windows Azure 时,您不能像看起来那样依赖子协议吗?

于 2014-03-31T09:34:34.010 回答