Javascript 在下列套接字连接后打印socket.room时,无法识别初始socket.join()

Javascript 在下列套接字连接后打印socket.room时,无法识别初始socket.join(),javascript,node.js,sockets,websocket,socket.io,Javascript,Node.js,Sockets,Websocket,Socket.io,[我的问题是,当我离开handleNewGame()函数时,我的初始socket.join(创建游戏的用户)无法识别。此图像包含console.log。在每次调用socket.join后,我都会在用户首次创建游戏时进行初始socket.join调用,其余调用都是在用户使用代码加入游戏时进行的 VERSION 2.3.0 Socket.io ] }))` })) 根据socket.io的版本,socket.join()可能是异步的,因此立即检查.rooms将不会

[我的问题是,当我离开handleNewGame()函数时,我的初始socket.join(创建游戏的用户)无法识别。此图像包含console.log。在每次调用socket.join后,我都会在用户首次创建游戏时进行初始socket.join调用,其余调用都是在用户使用代码加入游戏时进行的

VERSION 2.3.0 Socket.io                 
]

}))`


}))

根据socket.io的版本,
socket.join()
可能是异步的,因此立即检查
.rooms
将不会显示它,因为连接尚未完成。如果是这种情况,则在异步功能完成后,它最终会显示在文件室中,但不会更新文件室。请更仔细地查看图像。可能在您再次登录之前,您的其他套接字正在断开连接,因此在您查看时它们不在。有许多可能的解释
socket.join()
对于世界其他地方来说都很好。今后,请不要将此类诊断信息放在图像中。将它以纯文本的形式复制到你的问题中,这样我们都可以更清楚地看到它,这样就可以对它进行搜索和索引,并使那些使用屏幕阅读器的人能够访问它,等等。。。此外,如果您记录
roomName
,则有助于了解在控制台输出中要查找的内容。您还可以记录
socket.rooms
并查看显示的内容。在查看日志输出时,我认为它显示了第一个条目的内容。因为它是一个映像,所以我无法复制它,但是第一个连接记录了我所期望的
console.log(io.sockets.adapter.rooms)。它显示了两个房间。其中一个房间的名称与socket.id相同。这是预期的,因为每个套接字都单独放置在一个房间中,其名称为
socket.id
。它还显示了另一个房间,房间名为
s4WpA
,我猜是
let roomName=makeid(5)的输出
io.on('connection', socket => {

console.log("Connection")
socket.on('newGame', handleNewGame);
socket.on('joinGame', handleJoinGame);


async function handleNewGame() {
    let roomName = makeid(5);
    
    const game = await Game.create({roomID: roomName, Players: [socket.id]});
    clientRooms[socket.id] = roomName;
    socket.emit('gameCode', game.roomID);   
    state[roomName] = game.GameState; 

    socket.join(roomName);
    console.log(`Socket ID: ${socket.id}`);
    console.log(io.sockets.adapter.rooms);    
}

function handleJoinGame(roomName) {
    clientRooms[socket.id] = roomName;

    socket.join(roomName);
    console.log(`Socket ID: ${socket.id}`);
    console.log(io.sockets.adapter.rooms);
}