Версии WebSocket и обратная совместимость

Я экспериментировал с WebSockets последние пару дней, и у меня неоднозначный опыт работы с новой, очень крутой технологией. Я написал простой клиент чата, в котором используется последняя версия HTML5 Labs , которая, как мне кажется, является черновой версией спецификации hybi-09. Клиент отлично работает в Chrome (dev channel v14.0). Все работает как надо. Однако в любом другом крупном браузере, который изначально поддерживает WebSockets (FireFox (v6.0b) (да, я включил функциональность WebSockets), Safari (v5.1)), он не может подключиться по какой-то причине. Вот часть моего клиентского кода:

$(document).ready(connect);

function connect() {
    if ('WebSocket' in window) {
        websocket = new WebSocket('ws://' + window.location.hostname + ':4502/chat');
    }
    else if ('MozWebSocket' in window) {
        websocket = new MozWebSocket('ws://' + window.location.hostname + ':4502/chat');
    }
    else {
        //not supported
        return;
    }

    websocket.onopen = function () {
        //do some setup stuff
    };

    websocket.onclose = function () {
        //DOH
    };

    websocket.onmessage = function (e) {
        //Do some stuff with e.data
    };
}

и некоторый (C #) серверный код:

static void Main(string[] args)
{
    var host = new WebSocketsHost();
    host.AddWebSocketsEndpoint("ws://" + Environment.MachineName + ":4502/chat");
    host.Open();

    Console.ReadLine();
}

Как я уже сказал, он отлично подключается в Chrome и выполняет функцию .onopen, как и должно. В FF и Safari он переходит прямо к функции onclose и никогда не подключается. В FF я получаю следующие ошибки:

"NetworkError: 501 Not Implemented - http://localhost:4502/chat"
Firefox can't establish a connection to the server at ws://localhost:4502/chat

И в Safari:

WebSocket frame (at 4294967295 bytes) is too long.

Единственное, о чем я могу думать, - это проблема обратной совместимости. Я считаю, что Chrome 14.x реализует проект 10 спецификации hybi WebSockets, и я думаю, что FF 6 реализует проект 07 или 08, и я не уверен в Safari 5.1. Если кто-нибудь знает, в чем проблема и / или как / могу ли я ее исправить, я был бы признателен за помощь. Спасибо!

5
задан Chris 5 August 2011 в 17:48
поделиться