Я экспериментировал с 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. Если кто-нибудь знает, в чем проблема и / или как / могу ли я ее исправить, я был бы признателен за помощь. Спасибо!