1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.ParentNamespace = void 0;
- const namespace_1 = require("./namespace");
- class ParentNamespace extends namespace_1.Namespace {
- constructor(server) {
- super(server, "/_" + ParentNamespace.count++);
- this.children = new Set();
- }
- /**
- * @private
- */
- _initAdapter() {
- const broadcast = (packet, opts) => {
- this.children.forEach((nsp) => {
- nsp.adapter.broadcast(packet, opts);
- });
- };
- // @ts-ignore FIXME is there a way to declare an inner class in TypeScript?
- this.adapter = { broadcast };
- }
- emit(ev, ...args) {
- this.children.forEach((nsp) => {
- nsp.emit(ev, ...args);
- });
- return true;
- }
- createChild(name) {
- const namespace = new namespace_1.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.set(name, namespace);
- return namespace;
- }
- fetchSockets() {
- // note: we could make the fetchSockets() method work for dynamic namespaces created with a regex (by sending the
- // regex to the other Socket.IO servers, and returning the sockets of each matching namespace for example), but
- // the behavior for namespaces created with a function is less clear
- // note²: we cannot loop over each children namespace, because with multiple Socket.IO servers, a given namespace
- // may exist on one node but not exist on another (since it is created upon client connection)
- throw new Error("fetchSockets() is not supported on parent namespaces");
- }
- }
- exports.ParentNamespace = ParentNamespace;
- ParentNamespace.count = 0;
|