Multi Player game using Nodejs and Socket IO
- by Kishorevarma
I am trying out multi player racing game using Node and Socket IO ,express . So  I have tried simple example to see the latency between node server and  the clients.
 I have a draggable image in client . when I move the image ienter code heren one client ,it has to move in all clients. 
so basically when I am moving the image I am sending the image position to the node server in a json format , then from there I am broadcasting to all clients. there is a  ~approx 300ms latency  from the time. following are the results.
Client 1 sending data to server at : 286136 (timestamp)
                        Server received at : 286271 
Client2 received data at : 286470
Client3 received data at : 286479
Client4 received data at : 286487
Client5 received data at : 286520
the latency between move from client1 to client5 is  384ms. its too hight for a racing game ..
here is my server code.
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)  Is there any way to optimize the server code to reduce the latency?
2) is this expected latency using node and websockets ?
3) is socket io  can't broadcast the data asynchronously  (I mean at a same time) ?  
Thanks
Kishorevarma