测试2人socket.io游戏。更新标签会影响两个页面

时间:2017-03-14 19:51:51

标签: javascript jquery socket.io

我不明白为什么在一个页面上更新标签会影响另一个页面上的标签。我不认为DOM是这样分享的。打开一个标签或页面会成功将标签更新为'player1',但是当我打开另一个标签/页面时,它会将两个标签更新为'player2'。

<script>
var socket = io.connect('http://localhost:3000');
socket.on('connect', function() {
socket.emit('join');
socket.on('joinSuccess', function (playerSlot) {
  if (playerSlot === 'player1') {
   $("#playerID").text("you are player1");
} else if (playerSlot === 'player2') {
   $("#playerID").text("you are player2");
  }
}); //end joinSuccess
}); //end connect

我只是想通知用户他们是哪个球员。

溶液:

 else if (playerSlot === 'player2') {
    var elm = $("#playerID");
    var empty = !elm.text().trim();
    if (empty) {
      elm.text("you are " + playerSlot);
        }
      }

1 个答案:

答案 0 :(得分:1)

你是否正在推动加入成功&#39;新用户加入时的消息?在这种情况下,此消息将传递给具有相同playerSlot值的两个页面。因此,所有页面都会更新最后加入的玩家名称。

在这种情况下,你可以用简单的条件来处理这个问题,

socket.on('joinSuccess', function (playerSlot) {
  var elm = $("#playerID"); 
  if (!elm.text().trim()) {
    elm.text("you are " + playerSlot);
  }
});