【问题标题】:Socket.io number of rooms, the client is in is growing after each reconnectSocket.io的房间数,客户端在每次重新连接后都在增长
【发布时间】:2014-11-07 21:37:45
【问题描述】:

我有一个简单的 socket.io 服务器(1.1.0 vesrion),用户可以在其中加入/离开房间。问题是当用户断开连接(重新加载页面)时,他并没有离开他所在的房间。

当我打印他所在的房间列表时,它总是在增长。

io.sockets.on('connection', function(client){
  client.on('disconnect', function() {
    console.log(client.adapter.rooms);
  } 
}

我看到用户第一次断开连接时:

{ V_6ilicTsMPK9CGQAAAA: []}

重新加载页面几次后,我看到断开连接:

{ V_6ilicTsMPK9CGQAAAA: [],
  '6g1CpUyyKQtAbI4AAAAB': [],
  MS1VY1yxtVyRaG3XAAAC: [],
  TtXxNqVu5sHq0e9CAAAD: [],
  ...
  '1bPs4CRLQhEH0NKIAAAJ':

我尝试通过执行 client.leaveAll(); 手动离开房间;甚至遍历client.adapter.rooms 并通过client.leave(room) 删除,但情况是一样的。

我可以用这个无限增长的房间列表做什么。

【问题讨论】:

    标签: socket.io socket.io-1.0


    【解决方案1】:

    您的client.adapter.rooms 列出了所有房间。正如你所看到的,房间仍然在那里,但它们是空的。有趣的是,每个客户都有自己的房间。

    断开连接之前是这样的:

    'SomeRoom': [ ihN6vFupWqXHsKgKAAAF: true ]
    ihN6vFupWqXHsKgKAAAF: [ ihN6vFupWqXHsKgKAAAF: true ]
    

    断开连接后:

    'SomeRoom': []
    ihN6vFupWqXHsKgKAAAF: []
    

    我不知道 socket.io 是否会在某个时候删除空房间。

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 1970-01-01
      • 2015-01-05
      • 2019-11-20
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      相关资源
      最近更新 更多