I am using node.js and socket.io for websockets. My code looks like this:
client:
players = [], // contains all connected players
localPlayer; // contains 1 local player
function update() {
if (localPlayer.update(keys)) {
socket.emit("movePlayer", {x: localPlayer.getX(), y: localPlayer.getY()});
};
};
function draw() {
localPlayer.draw(context); // draw local player
var i;
for (i = 0; i < players.length; i++) {
if (players[i].getNick() != localPlayer.getNick()) {
players[i].draw(context); // draw all players except local player
}
};
function animate() {
update();
draw(); // canvas
window.requestAnimFrame(animate);
};
server:
socket.on('movePlayer', function(data) {
var movePlayer = playerById(socket.id);
movePlayer.setX(data.x); // update new position
movePlayer.setY(data.y); // update new position
io.sockets.emit("onMovePlayer", {id: movePlayer.id, x: movePlayer.getX(), y: movePlayer.getY()}); // send new position of player to all players
});
Everything works great, it's not lagging and it's fast. But problem is that I think this is a very hackable solution. Can you help me with that? (something with more security)