I run into an annoying problem which I don't know how to solve. I don't know whether WebSocket Server delay sending the message or WebSocket delay receiving the message.
var WebSocketServer = require('ws').Server;
var wss= new WebSocketServer({
port: 88
});
var players = {};
var playerInc = 1;
var gameLoopHandler = setInterval(function() {
broadcast(new Date().getTime().toString());
}, 200);
wss.on('connection', function connection(ws) {
console.log("Player ID ", playerInc, "is connected");
// Add player to the player list
var id = playerInc;
players[id] = ws;
playerInc++;
// Listen when websocket disconnect
ws.on("close", function() {
delete players[id];
})
});
function broadcast(message) {
for(var key in players) {
try {
var p = players[key];
p.send(message);
} catch(ex) {
}
}
}
For every 200ms, I broadcast the timestamp of the server. Then, I compare the timestamp that I receive from my client side.
var ws = new WebSocket("ws://127.0.0.1:88");
ws.onmessage = function(e) {
var now = new Date().getTime();
var diff = now - e.data;
console.log(e.data, now, diff);
}
I expected the different to be very low since it is operating in the same machine. But here is what I get
Every 500ms or 1 second, there will be a big delay. Sometimes, it takes 1 second to receive the message.