socket.rooms 返回空数组

ryd*_*d3r 2 express socket.io

我的服务器端有以下内容:

io.on('connection', function (socket) {
  socket.join('main');
  console.log(socket.rooms); 

/*    ==> []
*/

  console.log(socket.adapter.rooms); 

/*    ==> { '5incJ4hA4tKyJHUjAAAA': { '5incJ4hA4tKyJHUjAAAA': true },
    'stufn-iGnU6NTcXPAAAB': { 'stufn-iGnU6NTcXPAAAB': true },
    main: { 'stufn-iGnU6NTcXPAAAB': true } }
*/
});
Run Code Online (Sandbox Code Playgroud)

套接字已添加到房间,但 socket.room 数组未更新。我在 v1.3.5 和 v1.3.2 上看到这个问题

任何帮助表示赞赏。谢谢!

ryd*_*d3r 5

好的,结果是因为 socket.js 中的 .join 方法(参见模块)有一个异步函数,我的 console.logs 在房间被分配给 socket.rooms 之前被调用

课程:如果您想在加入后立即获取房间,请使用 .join 的回调函数。