0

Windows8とIIS8およびMVC4を使用してWebソケット接続を確立しています。これは、Firefox、IE10、Chromeで正常に機能します。Safariではまだwebsocketconnectionを確立できません。私のハンドラーコードは次のようになります。

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

問題は、Safariを介して接続している間、context.IsWebSocketRequestが常にfalseであるということです。私のJavaScriptコードは単純ですthis.socket = new WebSocket(window.WebSocketUrl);

4

1 に答える 1

2

使用中の websocket プロトコルには、互換性のないバージョンが 2 つあります。Safari は、元の (現在は廃止された) Hixieバリアントを使用します。Firefox、IE10、および Chrome は、新しいHybiバリアントを使用します

両方のバージョンを話す websocket サーバーを構築することはかなり可能ですが、MVC4 は Hybi クライアントのみをサポートしているようです。

Safariは最終的に追いつくでしょう。これを待つことができない場合は、両方の Websocket バリアントをサポートする代替サーバーを使用するか、代わりにポーリングするようにクライアントを作り直すことを検討できます (標準として、または Websocket 接続が失敗した場合のフォールバックとして)。

于 2012-05-23T16:28:18.350 に答える