cor*_*zza 2 javascript google-chrome websocket node.js socket.io
我正在使用笔记本电脑上的node.js和socket.io制作小型多人游戏。有时,当我想测试某些多人游戏功能时,我会使用PC登录PC(PC和笔记本电脑已连接到LAN网络)。Socket.io连接到路由器的IP(196. ...)和端口8080。直到今天,一切正常,当我只是想看看它如何工作之后才更改任何内容-突然没有了。我首先在笔记本电脑上打开Google Chrome浏览器并登录,效果很好。然后,我在PC上打开了Google Chrome浏览器,并尝试进行连接,但该连接无法正常工作。首先,用户在表单中输入其名称和密码,然后单击登录按钮,该按钮将调用此功能:
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.");
}
});
}
Run Code Online (Sandbox Code Playgroud)
当我调用函数get时,什么也没有发生。我注意到服务器记录类似于以下的消息:
设置请求GET /socket.io/1/websocket/
但是xhr-polling比websocket更常见。这就是我目前所知道的,而且在Firefox上一切正常,所以我认为这与Google Chrome有关。
当我尝试从PC登录时,服务器会记录日志:
调试-服务的静态/socket.io.js调试-客户端授权的
信息-握手授权的30836340583773206
调试-设置请求GET /socket.io/1/websocket/30836340583773206
调试-设置客户端的心跳间隔30836340583773206
调试-客户端授权进行
调试-设置请求GET /socket.io/1/xhr-polling/30836340583773206?t=1315509666877
调试-设置轮询超时
调试-丢弃传输
调试-清除客户端的心跳间隔30836340583773206
调试-提供服务的静态/socket.io.js
我只是有完全相同的问题。
我可以握手,并通过Chrome进行身份验证,但是客户端无法正确处理所有发射(尽管Socket.io正在发送它们)。
登录到服务器并更新socket.io。
$> npm ls会告诉您已安装模块的最新版本。以我为例,我正在跑步:
/var/www/discovery/node
??? express@2.4.6
? ??? connect@1.6.2
? ??? mime@1.2.2
? ??? qs@0.3.1
??? iniparser@1.0.3
??? jsonrpc@0.1.1
??? jsonrpc-ws@0.0.3
??? jsonrpc2@0.0.6
??? mysql@0.9.3
? ??? hashish@0.0.4
? ??? traverse@0.5.1
??? socket.io@0.7.9
??? policyfile@0.0.4
??? redis@0.6.6
??? socket.io-client@0.7.9
??? uglify-js@1.0.6
??? websocket-client@1.0.0
??? xmlhttprequest@1.2.2
Run Code Online (Sandbox Code Playgroud)
您会看到socket.io@0.7.9是旧的。这也意味着它没有最新的ws:// websocket协议更新。
因此,为了修复它,只需运行:
$> npm update socket.io express
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2411 次 |
| 最近记录: |