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

Method _add

packages/socket.io/lib/namespace.ts:335–380  ·  view source on GitHub ↗

* Adds a new client. * * @return {Socket} * @private

(
    client: Client<ListenEvents, EmitEvents, ServerSideEvents>,
    auth: Record<string, unknown>,
    fn: (
      socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
    ) => void,
  )

Source from the content-addressed store, hash-verified

333 * @private
334 */
335 async _add(
336 client: Client<ListenEvents, EmitEvents, ServerSideEvents>,
337 auth: Record<string, unknown>,
338 fn: (
339 socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
340 ) => void,
341 ) {
342 debug("adding socket to nsp %s", this.name);
343 const socket = await this._createSocket(client, auth);
344
345 this._preConnectSockets.set(socket.id, socket);
346
347 if (
348 // @ts-ignore
349 this.server.opts.connectionStateRecovery?.skipMiddlewares &&
350 socket.recovered &&
351 client.conn.readyState === "open"
352 ) {
353 return this._doConnect(socket, fn);
354 }
355
356 this.run(socket, (err) => {
357 process.nextTick(() => {
358 if ("open" !== client.conn.readyState) {
359 debug("next called after client was closed - ignoring socket");
360 socket._cleanup();
361 return;
362 }
363
364 if (err) {
365 debug("middleware error, sending CONNECT_ERROR packet to the client");
366 socket._cleanup();
367 if (client.conn.protocol === 3) {
368 return socket._error(err.data || err.message);
369 } else {
370 return socket._error({
371 message: err.message,
372 data: err.data,
373 });
374 }
375 }
376
377 this._doConnect(socket, fn);
378 });
379 });
380 }
381
382 private async _createSocket(
383 client: Client<ListenEvents, EmitEvents, ServerSideEvents>,

Callers 1

doConnectMethod · 0.80

Calls 6

_createSocketMethod · 0.95
_doConnectMethod · 0.95
runMethod · 0.95
debugFunction · 0.85
_errorMethod · 0.80
_cleanupMethod · 0.45

Tested by

no test coverage detected