我正在嘗試使用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