我正在创建一个私人聊天应用程序,希望根据他们的兴趣和行为在房间中添加特定套接字,我希望用户随时都可以进入房间。
我的问题是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创建的默认房间。
答案 0 :(得分:1)
我的问题是socket.io自动创建一个房间 每当新套接字连接或由于我的代码而发生时?
是的,根据每个新连接的套接字的id值自动创建一个房间,并将该套接字连接到该房间。没有其他插座放在那个房间里。这只是socket.io作为自己管家工作的一部分。这不是因为你的代码。
在大多数情况下,你可以忽略那个房间。如果你试图从一些枚举中过滤它,它有一个唯一的前缀。
有没有办法摆脱socketio创建的默认房间。
不是我知道的。并且,这样做可能会破坏一些socket.io内部。