Как переместить конкретного клиента, разделить его положение мыши для всех остальных клиентов

  • Открыть новое окно
  • Открыть объект документа в новом окне и записать в него простой документ, содержащий только те div, которые у вас есть, и необходимый заголовок html и т. д. - вы также можете хотите, чтобы документ тянулся в таблицу стилей, в зависимости от вашего содержимого
  • Поместите скрипт на новую страницу, чтобы вызвать window.print ()
  • Запустить скрипт
0
задан Nick 4 March 2019 в 12:57
поделиться

2 ответа

Вы не устанавливаете позицию, используя переданные данные. В вашем примере это глобальные xp и yp.

Вы также не передали user с данными при вызове emit, поэтому другие клиенты на самом деле понятия не имеют, какого пользователя следует переместить. Я бы также предложил добавить это в качестве поля в отправляемых вами данных.

socket.emit('move', {
        user: //THE VAR WHICH HOLDS THE SESSIONID FOR THIS USER
        xp: xp,
        yp: yp
    });
socket.on('move', function(data) {
    $('#user_' + data.user).animate({ left: data.xp + 'px', top: data.yp + 'px' }, 400 );
});
0
ответ дан Quince 4 March 2019 в 12:57
поделиться

Вам следует обновить данные, отправленные вами через move.

На стороне сервера должно быть что-то вроде:

socket.on('move', function(socket, data) {
    // broadcast to all sockets WHO is moving and WHERE
    io.emit('move', {userid: socket.id, xp: data.xp, yp: data.yp});
});

А на стороне клиента что-то вроде:

$('#stage').on('click', function(e) {
    $('#my_user').animate({ left: e.pageX + "px", top: e.pageY + "px"  });

    socket.emit('move', {xp: e.pageX, yp: e.pageY});
});

socket.on('move', function(data) {
    // check if it is not your own informations that server send back to you
    if (data.userid != my_userid) {
        $('#user_' + data.userid).animate({ left: data.xp + "px", top: data.yp + "px"  });
    }
});
0
ответ дан robinvrd 4 March 2019 в 12:57
поделиться
Другие вопросы по тегам:

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