在解决如何创建socket.io多播组的问题上取得进展之后,我发现将房间作为完成我需要的工作的好方法。
但是,很高兴知道所有房间,而无需额外的数据结构。
是否可以从服务器套接字获取服务器上所有房间的列表?
简短的答案:
io.sockets.adapter.rooms
我分析了io:
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] } }
从单个客户加入“ public-alfred”会议室后,其中io.sockets.adapter.rooms包含:
{ '': [ '210837319844898486' ], '/public-alfred': [ '210837319844898486' ] }