node.js - 如何在socket.io nodejs服务器上列出房间

标签 node.js multicast socket.io

问题取得进展后how to create socket.io multicast groups ,我发现制作房间是满足我需要的好方法。

但是,如果没有额外的数据结构,了解所有房间会很棒。

是否可以从服务器套接字获取服务器上所有房间的列表?

最佳答案

简短的回答:

io.sockets.adapter.rooms

我分析了io:

我得到以下输出:

{ server: 
   { stack: 
      [ [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object] ],
     connections: 3,
     allowHalfOpen: true,
     watcher: { host: [Circular], callback: [Function] },
     _events: 
      { request: [Function],
        connection: [Function: connectionListener],
        listening: [Object],
        upgrade: [Object] },
     httpAllowHalfOpen: false,
     cache: {},
     settings: { home: '/', env: 'development', hints: true },
     redirects: {},
     isCallbacks: {},
     _locals: { settings: [Object], app: [Circular] },
     dynamicViewHelpers: {},
     errorHandlers: [],
     route: '/',
     routes: 
      { app: [Circular],
        routes: [Object],
        params: {},
        _params: [],
        middleware: [Function] },
     router: [Getter],
     __usedRouter: true,
     type: 'tcp4',
     fd: 7 },
  namespaces: 
   { '': 
      { manager: [Circular],
        name: '',
        sockets: [Object],
        auth: false,
        flags: [Object],
        _events: [Object] } },
  sockets: 
   { manager: [Circular],
     name: '',
     sockets: { '210837319844898486': [Object] },
     auth: false,
     flags: { endpoint: '', exceptions: [] },
     _events: { connection: [Function] } },
  settings: 
   { origins: '*:*',
     log: true,
     store: 
      { options: undefined,
        clients: [Object],
        manager: [Circular] },
     logger: { colors: true, level: 1 },
     heartbeats: true,
     resource: '/socket.io',
     transports: 
      [ 'websocket',
        'htmlfile',
        'xhr-polling',
        'jsonp-polling' ],
     authorization: [Function],
     'log level': 1,
     'close timeout': 25,
     'heartbeat timeout': 15,
     'heartbeat interval': 20,
     'polling duration': 20,
     'flash policy server': true,
     'flash policy port': 843,
     'destroy upgrade': true,
     'browser client': true,
     'browser client minification': false,
     'browser client etag': false,
     'browser client handler': false,
     'client store expiration': 15 },
  handshaken: 
   { '210837319844898486': 
      { headers: [Object],
        address: [Object],
        time: 'Mon Jul 18 2011 00:53:27 GMT+0200 (CEST)',
        xdomain: false,
        secure: undefined,
        PHPSESSID: '7qo6cht3q0rskhfes4eesb2d05' } },
  connected: { '210837319844898486': true },
  open: { '210837319844898486': true },
  closed: {},
  closedA: [],
  rooms: 
   { '': [ '210837319844898486' ],
     '/public-alfred': [ '210837319844898486' ] },
  roomClients: { '210837319844898486': [ '': true, '/public-alfred': true ] },
  oldListeners: [ [Function] ],
  _events: 
   { 'set:origins': [Function],
     'set:flash policy port': [Function],
     'set:transports': [Function] } }

从单个客户端io.sockets.adapter.rooms加入房间“public-alfred”后包含:

 { '': [ '210837319844898486' ],
         '/public-alfred': [ '210837319844898486' ] }

关于node.js - 如何在socket.io nodejs服务器上列出房间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6631501/

相关文章:

javascript - 如何使用排序键中的任何值查询 DynamoDB?

javascript - Node.js 中的管道问题

javascript - Express + Passport + Redis session ?

几秒钟后 C# UDP 多播断开连接

java - 同一服务器监听不同的套接字

javascript - 在 Node.js、Socket.io 数组中,socket.id 返回为未定义

javascript - 如何从 Node.js 中的 AWS getObject 调用返回变量

node.js - 在断开连接事件中重新连接套接字

ajax - Nodejs - 如何终止正在运行的 SQLite 查询

java - 如何连接多个Datagram Socket并发送消息