Socket.io房间数量,客户端在每次重新连接后都在增长

时间:2014-09-14 03:22:51

标签: socket.io socket.io-1.0

我有一个简单的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)删除,但情况是一样的。

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

1 个答案:

答案 0 :(得分:0)

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

在断开连接之前,它看起来像这样:

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

后遗忘:

'SomeRoom': []
ihN6vFupWqXHsKgKAAAF: []

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