0

我无法让我试图沟通的房间的第一个用户总是离开,但这只有在我检查它的 ID 时才会发生。

  socket.on('player moved', function(msg) {
var curr_room = msg.room_number;
var room_data = io.sockets.adapter.rooms[curr_room];
var temp_room = [];
console.log(room_data);
for (var id in room_data) {
  temp_room.push(io.sockets.adapter.nsp.connected[id]);
}
var player1_id = temp_room[0].id;
var player2_id = temp_room[1].id;
console.log(player1_id);
console.log(player2_id);
console.log(msg.player_id);
if (player1_id && player2_id) {
  if (player1_id === msg.player_id) {
    temp_room[1].emit('update coords', "dude");
  } else if ("ffff" === msg.player_id) {
    console.log('tessting to see wheter i can be in')
    temp_room[0].emit('update coords', "sweet");
  }
}

因此,这可以正常工作,并且当我 console.log 房间数据时,我看到了两个我想要的套接字,但是如果我将“ffff”更改为 player2_id,我会收到这个奇怪的错误,对于这个函数的第一次迭代,我会得到两个插座,但在那之后第一个玩家断开连接,我就剩下了

var player1_id = temp_room[0].id;
                             ^

TypeError:无法读取未定义的属性“id”

我完全不知道为什么进行此检查会使用户断开连接,而且我不知道为什么如果页面保持打开状态用户会断开连接。

任何人有任何见解,将不胜感激!谢谢!!

4

0 回答 0