2017-02-22 2 views
0

Мне нужно убрать кнопки из DOM, когда игрок нажимает на сиденье. таким образом, два игрока не могут занять одно и то же место. все кнопки должны быть скрыты на стороне клиента после того, как игрок садится, поэтому они не могут перемещать места.Я пытаюсь скрыть кнопку из других сокетов в node.js. После нажатия кнопок мой игрок я не хочу, чтобы другие игроки могли его нажимать.

сторона сервера

socket.on('seat1',function(){ 
     player.x = 380 
     player.y = 300 
     player.number = 1 
     console.log(player) 

    socket.emit('seat1',function(){ 
     hideSeatButtons(); 
    }) 

    }); 

    socket.on('seat2',function(){ 
     player.x = 380 
     player.y = 100 
     player.number = 2 
     console.log(player) 


    }); 

client side 

    var seat1 = function(){ 
     socket.emit('seat1',{ 

     }); 

    } 

    var seat2 = function(){ 
     socket.emit('seat2',{ 

     }); 

    } 


    var hideSeatButtons = function(){ 
     document.getElementById("seat1").style.display = "none"; 
     document.getElementById("seat2").style.display = "none"; 
    } 
+0

Здесь всегда будет состояние гонки, так как два пользователя могут нажать одну и ту же кнопку примерно в одно и то же время (до того, как их клиент будет уведомлен о том, что кто-то другой нажал его). Итак, вам нужно нажать кнопку, а затем указать сервер, на который вы нажали. Сервер ответит, был ли клик успешным или нет, или кто-то еще уже щелкнул его перед вами, и клиент может вести себя соответствующим образом. Когда сервер получает успешный щелчок по кнопке, он может передавать всем остальным клиентам, что эта кнопка теперь принята, и клиенты могут вести себя соответственно. – jfriend00

ответ

0

Если у вас есть все настроено правильно, вы должны слушать на стороне клиента для события вы излучающие от сервера. Вместо того, передавая функцию, когда излучающий, попытайтесь передавая значение или объект (я изменил название события отправки клиенту, чтобы избежать путаницы с событием, предназначенной для сервера):

socket.on('seat1',function(){ 
    player.x = 380 
    player.y = 300 
    player.number = 1 
    console.log(player) 

    socket.emit('hideSeats', { 
     seatIndex: 1, 
     playerNumber: player.number 
    }); 
}); 

На клиенте вы можете прослушивать «hideSeats» и вызывать функцию кода клиента.

socket.on('hideSeats', function(obj) { 
    if (obj.playerNumber === player.number) { 
     hideSeatButtons(); 
    } else { 
     hideSingleSeatButton(obj.seatIndex); 
    } 
}); 

Это предполагает, что вы написать функцию, чтобы скрыть один -Какие сиденья, что я думаю, что вы хотели бы сделать для любого игрока, который не тот, кто выбрал место. Для игрока, который выбрал место, вы скрываете все места.

Этот подход охватывает ваш прецедент?

Смежные вопросы