| 'use strict'; |
| |
| 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; |