Sadyrbaev
@Sadyrbaev

Как передать другим подключенным клиентам положение элемента после event.target.prepend()?

Только изучаю 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 и вообще много чего можно сделать по другому, но я пока хочу понять как реализовать такую возможность именно в моей задаче, понять суть, а потом двигаться дальше.
  • Вопрос задан
  • 14 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы