当套接字被连接时,socketio是否会创建一个房间?

时间:2016-08-16 07:03:18

标签: node.js socket.io

我正在创建一个私人聊天应用程序,希望根据他们的兴趣和行为在房间中添加特定套接字,我希望用户随时都可以进入房间。

我的问题是socket.io是否会在新套接字连接或由于我的代码而发生时自动创建一个房间?

var allSockets = []; // Adding all new sockets in an array

console.log(allSockets.length); // checking length of an array after socket connection

app.get('/api/rooms',function(req,res){
  res.send(io.sockets.adapter.rooms); // just a url to see the rooms connected
})

以上是代码示例,下面是两个用户连接时的输出示例

{"/#DtUmoNBKeQSYMcepAAAA":{"sockets":{"/#DtUmoNBKeQSYMcepAAAA":true},"length":1},"/#1FXDSOViOj2R64DjAAAB":{"sockets":{"/#1FXDSOViOj2R64DjAAAB":true},"length":1},"57b2ba38426f18d1040a6d5f":{"sockets":{"/#1FXDSOViOj2R64DjAAAB":true,"/#DtUmoNBKeQSYMcepAAAA":true},"length":2}}

我可以在上面的结果中看到,两个用户都有自己的房间以及他们两个在一起的新房间。总共有三个房间。

有没有办法摆脱socketio创建的默认房间。

1 个答案:

答案 0 :(得分:1)

  

我的问题是socket.io自动创建一个房间   每当新套接字连接或由于我的代码而发生时?

是的,根据每个新连接的套接字的id值自动创建一个房间,并将该套接字连接到该房间。没有其他插座放在那个房间里。这只是socket.io作为自己管家工作的一部分。这不是因为你的代码。

在大多数情况下,你可以忽略那个房间。如果你试图从一些枚举中过滤它,它有一个唯一的前缀。

  

有没有办法摆脱socketio创建的默认房间。

不是我知道的。并且,这样做可能会破坏一些socket.io内部。