【问题标题】:Does socketio creates a room always when a socket gets coonected?当套接字连接时,socketio 是否总是创建一个房间?
【发布时间】:2016-08-16 07:03:18
【问题描述】:

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

我的问题是,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 创建的默认房间。

【问题讨论】:

  • sockets,在编程级别上,与socket.io 无关...我删除了标签。有关详细信息,请参阅sockets 标签详细信息。

标签: node.js socket.io


【解决方案1】:

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

是的,一个房间会根据每个新连接的套接字的 id 值自动创建,并且该套接字会加入该房间。那个房间里没有其他插座。这只是 socket.io 作为它自己的家务的一部分所做的事情。不是因为你的代码。

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

如果有的话,有什么办法可以摆脱 socketio 创建的默认房间。

我不知道。而且,这样做可能会弄乱一些 socket.io 内部结构。

【讨论】:

  • 感谢您的快速回答。
猜你喜欢
  • 1970-01-01
  • 2017-04-26
  • 2022-10-31
  • 1970-01-01
  • 2017-03-15
  • 2015-12-26
  • 1970-01-01
  • 2016-03-09
  • 2014-04-13
相关资源
最近更新 更多