我正在尝试使用Node和Socket IO的多人赛车游戏,表达。所以我试过简单的例子来看看节点服务器和客户端之间的延迟。 我在客户端有一个可拖动的图像。当我将图像引擎代码heren移动到一个客户端时,它必须移动到所有客户端。 所以基本上当我移动图像时,我将图像位置以json格式发送到节点服务器,然后从那里向所有客户端广播。从那时起大约有300毫秒的延迟。以下是结果。使用Nodejs和套接字IO的多人游戏游戏
客户端1在将数据发送到服务器:286136(时间戳) 服务器接收到的:286479 Client4在接收到的数据:286470 Client3在接收到的数据:286271
客户机2在接收到的数据286487 客户机程序接收到的数据at:286520
从client1移动到client5的延迟时间为384ms。它太高的赛车游戏.. 这里是我的服务器代码。
var app = require('express').createServer();
var io = require('socket.io');
var http = require('http');
var http_server = http.createServer();
var server = http.createServer(app);
server.listen(3000);
var socket = io.listen(server,{ log: false });
socket.sockets.on('connection', function (client) {
client.on('message', function (data){
console.log("data arrived to server",new Date().getTime());
// Below both statements are giving same latency between the client 1 and client 5
client.broadcast.emit('message',data);
//socket.sockets.emit('message',data);
});
});
1)有什么办法来优化服务器代码,以减少延迟?
2)这是使用节点和websockets的预期延迟吗?
3)是socket io不能异步地广播数据(我的意思是同一时间)?
感谢 Kishorevarma
你为什么不跟Reddwarfserver.org做演示? – felipe 2012-08-10 17:01:45
你使用什么浏览器?这可能是由于使用不支持websocket的浏览器。这会增加大量的延迟。另外我猜你没有在本地运行你的服务器。您应该对服务器运行常规ping,并查看有多少延迟是纯网络。 – travis 2012-08-10 17:37:09