Только изучаю Node.js и Socket.io.
Есть функция на клиенте.
function GameMap(event) {
let target = event.target;
switch(target.className) {
case 'coast':
Place('img/coast.jpg');
break;
case 'water':
Place('img/water.png');
break;
case 'land':
Place('img/land.jpg');
break;
}
if (flag == true && (target.className == 'land' || target.className == 'coast')) {
target.prepend(player);
socket.emit('move', 'НАХУЙ');
flag = false;
flag2 = false;
} else if (flag3 == true && (target.className == 'land' || target.className == 'coast')) {
playermenu.style.display = "none";
flag2 = false;
flag3 = false;
}
socket.on('move2', function(data) {
coast2.innerHTML = data;
});
}
И простой прием от отправка на сервере.
socket.on('move', function(data) {
io.emit('move2', data);
});
Если убрать клиент серверную часть кода, то функция просто перемещает элемент (div) в начало другого элемента (target.prepend(player)), естественно по принципу event.target. Но кода добавляю отправку события на сервер и связанное с ним событие уже с сервера всем остальным подключенным клиентам то логично что у них ничего не изменится, потому что у других клиентов не было нажатий, и соответственно не сработает event.target а из за этого не сработает прием события
socket.on('move2', function(data) {coast2.innerHTML = data;});
Так вот, как сделать чтобы гребаный персонаж переместился и у того кто сделал ход и у тех кто просто смотрит на экран? в рамках моей задачи, а именно тупо перемещение элементов div. Первое что приходит в голову это проставить id всем элементам карты, т.е. определять куда попадает event.target по id и уже по этому id отобразить перемещение персонажа для других подключенных клиентов. Но кажется что должно быть более грамотное решение. Знаю что проще все это сделать наверное через canvas и вообще много чего можно сделать по другому, но я пока хочу понять как реализовать такую возможность именно в моей задаче, понять суть, а потом двигаться дальше.