我遇到的问题是让我想要通信的房间的第一个用户总是离开,但这只会在我检查其身份时发生。
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房间数据时,我看到两个套接字是我想要的,但是如果我改变了#34; ffff" to player2_id我得到这个奇怪的错误,对于这个函数的第一次迭代,我得到两个套接字,但在那之后第一个玩家断开连接,我离开
var player1_id = temp_room[0].id;
^
TypeError:无法读取属性' id'未定义的
我完全不知道为什么这个检查会让用户断开连接,而且我不知道为什么用户在页面保持打开状态时断开连接。
任何人都有任何见解,我们将不胜感激! 谢谢!