我正在我的筆記本電腦上使用node.js和socket.io製作一個小型多人遊戲。偶爾,當我想測試一些多人遊戲功能時,我使用我的電腦登錄遊戲(PC和筆記本電腦連接到局域網)。 Socket.io連接到我的路由器的IP(196. ...)和端口8080.一切都運行良好,直到今天,當我想在我改變任何東西時看到它是如何工作的 - 突然它沒有。我首先在我的筆記本電腦上打開Google Chrome,然後登錄,確定無誤。然後,我在PC上打開Google Chrome並嘗試連接,但無法正常工作。首先,用戶輸入自己的名字和密碼的格式,並點擊登錄按鈕,調用該函數:Google Chrome是否支持socket.io?
login = function()
{
var n = document.forms['logn']['name'].value;
var p = document.forms['logn']['password'].value;
var socket = io.connect("http://192.168.0.13:8080");
socket.emit("login", {n: n, p: p});
socket.on("got", function(data){
if (data.good)
{
main(socket, n)
}
else
{
alert("Failed to log in.");
}
});
}
當我的函數來獲取的叫,什麼都不會發生。我注意到,服務器日誌類似這樣的消息:
設置請求GET /socket.io/1/websocket/
但是XHR輪詢更往往比WebSocket的。這就是我現在所知道的,同樣,在Firefox上一切正常,所以我認爲這是Google Chrome的一個問題。
服務器日誌,當我嘗試從PC登錄:
調試 - 提供靜態/socket.io.js調試 - 客戶端授權
信息 - 握手授權30836340583773206
調試 - 設置請求GET /socket.io/1/websocket/30836340583773206
調試 - 客戶端30836340583773206
調試設置心跳間隔 - 客戶端授權
調試 - 設置請求GET /socket.io/1/xhr-polling/30836340583773206?t=13155096 66877個
調試 - 設置輪詢超時
調試 - 丟棄運輸
調試 - 清除心跳間隔爲客戶30836340583773206
調試 - 提供靜態/socket.io.js
? – Matt
另外,您的Mac上有哪些Chrome版本,以及PC上的內容是什麼?我知道有一個新版本的網絡套接字協議下線 – Matt
您使用的是什麼版本的Chrome,以及您使用的是什麼版本的Socket.IO? Chrome最近在Chrome 14中更新了它的websocket協議版本(http://updates.html5rocks.com/2011/08/What-s-different-in-the-new-WebSocket-protocol)。好消息是最新版本的SocketIO確實支持這個新協議。 – ebidel