MCPcopy
hub / github.com/socketio/socket.io / ParentNamespace

Class ParentNamespace

packages/socket.io/lib/parent-namespace.ts:30–109  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28 *
29 */
30export class ParentNamespace<
31 ListenEvents extends EventsMap = DefaultEventsMap,
32 EmitEvents extends EventsMap = ListenEvents,
33 ServerSideEvents extends EventsMap = DefaultEventsMap,
34 SocketData = any,
35> extends Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData> {
36 private static count: number = 0;
37 private readonly children: Set<
38 Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
39 > = new Set();
40
41 constructor(
42 server: Server<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
43 ) {
44 super(server, "/_" + ParentNamespace.count++);
45 }
46
47 /**
48 * @private
49 */
50 _initAdapter(): void {
51 this.adapter = new ParentBroadcastAdapter(this);
52 }
53
54 public emit<Ev extends EventNamesWithoutAck<EmitEvents>>(
55 ev: Ev,
56 ...args: EventParams<EmitEvents, Ev>
57 ): boolean {
58 this.children.forEach((nsp) => {
59 nsp.emit(ev, ...args);
60 });
61
62 return true;
63 }
64
65 createChild(
66 name: string,
67 ): Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData> {
68 debug("creating child namespace %s", name);
69 const namespace = new Namespace(this.server, name);
70 this["_fns"].forEach((fn) => namespace.use(fn));
71 this.listeners("connect").forEach((listener) =>
72 namespace.on("connect", listener),
73 );
74 this.listeners("connection").forEach((listener) =>
75 namespace.on("connection", listener),
76 );
77 this.children.add(namespace);
78
79 if (this.server._opts.cleanupEmptyChildNamespaces) {
80 const remove = namespace._remove;
81
82 namespace._remove = (socket) => {
83 remove.call(namespace, socket);
84 if (namespace.sockets.size === 0) {
85 debug("closing child namespace %s", name);
86 namespace.adapter.close();
87 this.server._nsps.delete(namespace.name);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…