0

我正在使用带有 IIS8 和 MVC4 的 Windows 8 来建立 websocketconnection。这适用于 Firefox、IE10 和 Chrome。Safari 仍然不允许我建立 websocketconnection。我的处理程序代码如下所示:

<!-- language: c# -->
public void ProcessRequest(HttpContext context)
{
if (context.IsWebSocketRequest)
{
Client client = new Client();
context.AcceptWebSocketRequest(client.HoldConnection);
}
}

问题是 context.IsWebSocketRequest 在通过 Safari 连接时总是错误的。我的 JavaScript 代码很简单this.socket = new WebSocket(window.WebSocketUrl);

4

1 回答 1

2

使用了两个不兼容的 websocket 协议版本。Safari 使用原始(现已弃用)Hixie变体;Firefox、IE10 和 Chrome 使用较新的Hybi变体

构建一个支持两个版本的 websocket 服务器是完全可能的,但听起来 MVC4 只支持 Hybi 客户端。

Safari 最终会迎头赶上。如果您等不及了,您可以考虑使用支持两种 websocket 变体的替代服务器,或者重新设计您的客户端以进行轮询(作为标准或 websocket 连接失败时的后备)。

于 2012-05-23T16:28:18.350 回答