MVC4、WebSocket、Safari context.IsWebSocketRequest为false

MVC4、WebSocket、Safari context.IsWebSocketRequest为false,safari,websocket,asp.net-mvc-4,Safari,Websocket,Asp.net Mvc 4,我正在使用Windows8与IIS8和MVC4建立websocketconnection。这在Firefox、IE10和Chrome上运行良好。Safari仍然不让我建立websocketconnection。我的Handlercode如下所示: <!-- language: c# --> public void ProcessRequest(HttpContext context) { if (context.IsWebSocketRequest) { Client client

我正在使用Windows8与IIS8和MVC4建立websocketconnection。这在Firefox、IE10和Chrome上运行良好。Safari仍然不让我建立websocketconnection。我的Handlercode如下所示:

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

公共void ProcessRequest(HttpContext上下文)
{
if(context.IsWebSocketRequest)
{
客户端=新客户端();
AcceptWebSocketRequest(client.HoldConnection);
}
}

问题是context.IsWebSocketRequest在通过Safari连接时始终为false。我的JavaScript代码是一个简单的
this.socket=newWebSocket(window.WebSocketUrl)

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

构建一个同时使用两个版本的websocket服务器是很有可能的,但听起来MVC4只支持Hybi客户端


狩猎旅行终将迎头赶上。如果你不能等待这一点,你可以考虑使用一个支持WebSoCo变种的替代服务器,或者改用你的客户机轮询(无论是标准的还是WebSoad连接失败时的倒退)。谢谢你的回答,我想我可以等待。你知道ios版本的safari是否也会说Hixie吗?是的,恐怕ios safari也会说Hixie。你也可以尝试使用Signal。我们已经使用signar成功地实现了监听消息总线。它对所有的客户都很好。是的,我已经读过关于Signal的书,但我认为我们会坚持使用WebSocket,因为它将是(或者可能是)一个标准,所以为什么不使用它呢。我们不需要支持较旧的浏览器。仅供参考:它与webkit的夜间构建一起工作,因此将在iOS6中使用。