プレーヤーが座席をクリックすると、ボタンをDOMから取り除く必要があります。このように2人のプレーヤーは同じ座席を取ることができません。プレイヤーが座ってから座席を動かすことができないようにすべてのボタンをクライアント側に隠す必要があります。私は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";
}
2人のユーザーがほぼ同時に(同じクライアントが他のユーザーがクリックしたことが通知される前に)同じボタンをクリックする可能性があるため、常に競合状態が発生します。それで、あなたがする必要があるのは、ボタンをクリックして、それをクリックしたことをサーバーに伝えることです。サーバーは、クリックが成功したかどうか、またはあなたとクライアントがそれに応じて行動する前に他の誰かがそれをクリックしたかどうかを返信します。サーバーがボタンのクリックに成功すると、サーバーは他のすべてのクライアントにブロードキャストして、そのボタンが現在取得されていることをクライアントがそれに応じて動作させることができます。 – jfriend00