socket.rooms返回空数组

时间:2015-03-25 21:35:52

标签: 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 } }
*/
});

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

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

1 个答案:

答案 0 :(得分:4)

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

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