過去幾天我一直在使用WebSockets進行試驗,我對這種新的非常酷的技術有着一些混合體驗。我寫了一個簡單的聊天客戶端,它使用HTML5 Labs的最新版本,我相信它是hybi-09草稿版本。客戶端在Chrome中很棒(開發通道v14.0)。所有功能都應該如此。但是,在本機支持WebSocket(FireFox(v6.0b))的所有其他主要瀏覽器(是,我打開了WebSockets功能),Safari(v5.1))中,由於某種原因它無法連接。下面是我的一些客戶端代碼:WebSocket版本和向後兼容性
$(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<ReverseService>();
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實現了hybi WebSockets的草案10規範,我認爲FF 6實現了草稿07或08,我不確定Safari 5.1。如果任何人有什麼問題是什麼和/或如何/如果我能解決它,我會很感激的幫助。謝謝!
感謝您在Window代碼片段中。正在尋找一種簡單的方式來編寫跨平臺js。 – Stevko