我正在使用带有IIS8和MVC4的Windows 8来建立websocketconnection。这适用于Firefox,IE10和Chrome。Safari仍然不允许我建立websocket连接。我的处理程序代码如下所示:
<!-- language: c# -->
public void ProcessRequest(HttpContext context)
{
if (context.IsWebSocketRequest)
{
Client client = new Client();
context.AcceptWebSocketRequest(client.HoldConnection);
}
}
问题在于这种背景。IsWebSocketRequest 总是假的,同时通过 Safari 连接。我的JavaScript代码是一个简单的this.socket = new WebSocket(window.WebSocketUrl);
有两个不兼容的 websocket 协议版本正在使用。 Safari使用原始(现已弃用)Hixie变体;Firefox,IE10和Chrome使用较新的Hybi变体
。构建一个同时使用两个版本的 websocket 服务器是很有可能的,但听起来 MVC4 只支持 Hybi 客户端。
Safari最终会迎头赶上。 如果您迫不及待,您可以考虑使用支持两种 websocket 变体的替代服务器,或者重新设计您的客户端以轮询(作为标准或作为 websocket 连接失败时的回退)。