Node と Socket IO ,express を使用してマルチプレイヤー レーシング ゲームを試しています。そこで、ノード サーバーとクライアント間のレイテンシを確認するために、簡単な例を試してみました。client にドラッグ可能な画像があります。1 つのクライアントでイメージ エンター コードを移動すると、すべてのクライアントで移動する必要があります。したがって、基本的に画像を移動するときは、画像の位置を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) node と websockets を使用した場合、これは予想されるレイテンシですか?
3) ソケット io はデータを非同期的にブロードキャストできませんか (つまり、同時に) ?
ありがとう