; | |
const Namespace = require('./namespace'); | |
let count = 0; | |
class ParentNamespace extends Namespace { | |
constructor(server) { | |
super(server, '/_' + (count++)); | |
this.children = new Set(); | |
} | |
initAdapter() {} | |
emit() { | |
const args = Array.prototype.slice.call(arguments); | |
this.children.forEach(nsp => { | |
nsp.rooms = this.rooms; | |
nsp.flags = this.flags; | |
nsp.emit.apply(nsp, args); | |
}); | |
this.rooms = []; | |
this.flags = {}; | |
} | |
createChild(name) { | |
const namespace = new Namespace(this.server, name); | |
namespace.fns = this.fns.slice(0); | |
this.listeners('connect').forEach(listener => namespace.on('connect', listener)); | |
this.listeners('connection').forEach(listener => namespace.on('connection', listener)); | |
this.children.add(namespace); | |
this.server.nsps[name] = namespace; | |
return namespace; | |
} | |
} | |
module.exports = ParentNamespace; | |