我正在尝试使用 Node 和 Socket IO、express 的多人赛车游戏。所以我尝试了一个简单的例子来查看节点服务器和客户端之间的延迟。我在客户端有一个可拖动的图像。当我将图像输入代码移动到一个客户端时,它必须移动到所有客户端。所以基本上当我移动图像时,我会以 json 格式将图像位置发送到节点服务器,然后从那里向所有客户端广播。从那时起大约有 300 毫秒的延迟。以下是结果。
客户端 1 向服务器发送数据:286136(时间戳)服务器接收:286271
Client2 在:286470 收到数据 Client3 在:286479 Client4 收到数据在:286487 Client5 在:286520 收到数据
从 client1 移动到 client5 之间的延迟为 384 毫秒。它对于赛车游戏来说太高了..这是我的服务器代码。
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