Google Chrome是否支持socket.io?
我正在我的笔记本电脑上使用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
我只是恰好的相同问题。
我可以握手,并通过Chrome进行身份验证,但任何发射都没有在客户端上正确处理(虽然Socket.io发送它们)。
登录到您的服务器并更新socket.io。
$> npm ls
会告诉你已安装模块的最新版本。在我的例子中,我正在运行:
/var/www/discovery/node
├─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
│ └── [email protected]
└─┬ [email protected]
├── [email protected]
├── [email protected]
└─┬ [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
你可以看到[email protected]是旧的。这也意味着它没有最新的ws:// websocket协议更新。
所以为了解决这个问题,只需运行:
您正在使用哪个Socket.IO的版本?它们匹配的客户端和服务器端$> npm update socket.io express
谢谢!虽然它随着它停止而开始工作......现在都很酷。 – corazza
? – 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