socket.io

  • Version 4.7.5
  • Published
  • 1.33 MB
  • 7 dependencies
  • MIT license

Install

npm i socket.io
yarn add socket.io
pnpm add socket.io

Overview

node.js realtime framework server

Index

Classes

class BroadcastOperator

class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
implements TypedEventBroadcaster<EmitEvents> {}

    constructor

    constructor(
    adapter: Adapter,
    rooms?: Set<Room>,
    exceptRooms?: Set<Room>,
    flags?: any
    );

      property local

      readonly local: BroadcastOperator<EmitEvents, SocketData>;
      • Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node.

        Example 1

        // the “foo” event will be broadcast to all connected clients on this node io.local.emit("foo", "bar");

        a new BroadcastOperator instance for chaining

      property volatile

      readonly volatile: BroadcastOperator<EmitEvents, SocketData>;
      • Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to receive messages (because of network slowness or other issues, or because they’re connected through long polling and is in the middle of a request-response cycle).

        Example 1

        io.volatile.emit("hello"); // the clients may or may not receive it

        a new BroadcastOperator instance

      method allSockets

      allSockets: () => Promise<Set<SocketId>>;

      method compress

      compress: (compress: boolean) => BroadcastOperator<EmitEvents, SocketData>;
      • Sets the compress flag.

        Parameter compress

        if true, compresses the sending data a new BroadcastOperator instance

        Example 1

        io.compress(false).emit("hello");

      method disconnectSockets

      disconnectSockets: (close?: boolean) => void;
      • Makes the matching socket instances disconnect.

        Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

        Parameter close

        whether to close the underlying connection

        Example 1

        // make all socket instances disconnect (the connections might be kept alive for other namespaces) io.disconnectSockets();

        // make all socket instances in the "room1" room disconnect and close the underlying connections io.in("room1").disconnectSockets(true);

      method emit

      emit: <Ev extends EventNames<EmitEvents>>(
      ev: Ev,
      ...args: EventParams<EmitEvents, Ev>
      ) => boolean;
      • Emits to all clients.

        Example 1

        // the “foo” event will be broadcast to all connected clients io.emit("foo", "bar");

        // the “foo” event will be broadcast to all connected clients in the “room-101” room io.to("room-101").emit("foo", "bar");

        // with an acknowledgement expected from all connected clients io.timeout(1000).emit("some-event", (err, responses) => { if (err) { // some clients did not acknowledge the event in the given delay } else { console.log(responses); // one response per client } });

        Always true

      method emitWithAck

      emitWithAck: <
      Ev extends IfAny<
      | EmitEvents[IfAny<
      | EmitEvents[EventNames<EmitEvents>]
      | Last<Parameters<EmitEvents[EventNames<EmitEvents>]>>,
      EventNames<EmitEvents>,
      | (keyof EmitEvents & string extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & string]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never
      )
      ? (Last<
      Parameters<EmitEvents[keyof EmitEvents & string]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never) &
      keyof EmitEvents &
      string
      : never)
      | (keyof EmitEvents & symbol extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & symbol]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never
      )
      ? (Last<
      Parameters<EmitEvents[keyof EmitEvents & symbol]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never) &
      keyof EmitEvents &
      symbol
      : never)
      >]
      | Last<
      Parameters<
      EmitEvents[IfAny<
      | EmitEvents[EventNames<EmitEvents>]
      | Last<Parameters<EmitEvents[EventNames<EmitEvents>]>>,
      EventNames<EmitEvents>,
      | (keyof EmitEvents & string extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & string]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never) &
      keyof EmitEvents &
      string
      : never)
      | (keyof EmitEvents & symbol extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & symbol]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never) &
      keyof EmitEvents &
      symbol
      : never)
      >]
      >
      >,
      IfAny<
      | EmitEvents[EventNames<EmitEvents>]
      | Last<Parameters<EmitEvents[EventNames<EmitEvents>]>>,
      EventNames<EmitEvents>,
      | (keyof EmitEvents & string extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & string]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never
      )
      ? (Last<
      Parameters<EmitEvents[keyof EmitEvents & string]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never) &
      keyof EmitEvents &
      string
      : never)
      | (keyof EmitEvents & symbol extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & symbol]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never
      )
      ? (Last<
      Parameters<EmitEvents[keyof EmitEvents & symbol]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never) &
      keyof EmitEvents &
      symbol
      : never)
      >,
      IfAny<
      | EmitEvents[EventNames<EmitEvents>]
      | Last<Parameters<EmitEvents[EventNames<EmitEvents>]>>,
      EventNames<EmitEvents>,
      | (keyof EmitEvents & string extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & string]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never
      )
      ? (Last<
      Parameters<EmitEvents[keyof EmitEvents & string]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never) &
      keyof EmitEvents &
      string
      : never)
      | (keyof EmitEvents & symbol extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & symbol]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never
      )
      ? (Last<
      Parameters<EmitEvents[keyof EmitEvents & symbol]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never) &
      keyof EmitEvents &
      symbol
      : never)
      > extends (
      LooseParameters<
      Last<
      Parameters<
      EmitEvents[IfAny<
      | EmitEvents[EventNames<EmitEvents>]
      | Last<
      Parameters<EmitEvents[EventNames<EmitEvents>]>
      >,
      EventNames<EmitEvents>,
      | (keyof EmitEvents & string extends (
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never) &
      keyof EmitEvents &
      string
      : never)
      | (keyof EmitEvents & symbol extends (
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never) &
      keyof EmitEvents &
      symbol
      : never)
      >]
      >
      >
      >[0] extends Error
      ? IfAny<
      | EmitEvents[EventNames<EmitEvents>]
      | Last<Parameters<EmitEvents[EventNames<EmitEvents>]>>,
      EventNames<EmitEvents>,
      | (keyof EmitEvents & string extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & string]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never) &
      keyof EmitEvents &
      string
      : never)
      | (keyof EmitEvents & symbol extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & symbol]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never) &
      keyof EmitEvents &
      symbol
      : never)
      >
      : never
      )
      ? (LooseParameters<
      Last<
      Parameters<
      EmitEvents[IfAny<
      | EmitEvents[EventNames<EmitEvents>]
      | Last<
      Parameters<
      EmitEvents[EventNames<EmitEvents>]
      >
      >,
      EventNames<EmitEvents>,
      | (keyof EmitEvents & string extends (
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never) &
      keyof EmitEvents &
      string
      : never)
      | (keyof EmitEvents & symbol extends (
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never) &
      keyof EmitEvents &
      symbol
      : never)
      >]
      >
      >
      >[0] extends Error
      ? IfAny<
      | EmitEvents[EventNames<EmitEvents>]
      | Last<Parameters<EmitEvents[EventNames<EmitEvents>]>>,
      EventNames<EmitEvents>,
      | (keyof EmitEvents & string extends (
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never) &
      keyof EmitEvents &
      string
      : never)
      | (keyof EmitEvents & symbol extends (
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never) &
      keyof EmitEvents &
      symbol
      : never)
      >
      : never) &
      IfAny<
      | EmitEvents[EventNames<EmitEvents>]
      | Last<Parameters<EmitEvents[EventNames<EmitEvents>]>>,
      EventNames<EmitEvents>,
      | (keyof EmitEvents & string extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & string]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents & string]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      string]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & string
      : never) &
      keyof EmitEvents &
      string
      : never)
      | (keyof EmitEvents & symbol extends (
      Last<
      Parameters<EmitEvents[keyof EmitEvents & symbol]>
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never
      )
      ? (Last<
      Parameters<
      EmitEvents[keyof EmitEvents & symbol]
      >
      > extends (...args: any[]) => any
      ? FirstNonErrorArg<
      ((...args: any[]) => any) &
      Last<
      Parameters<
      EmitEvents[keyof EmitEvents &
      symbol]
      >
      >
      > extends void
      ? never
      : keyof EmitEvents & symbol
      : never) &
      keyof EmitEvents &
      symbol
      : never)
      >
      : never
      >
      >(
      ev: Ev,
      ...args: AllButLast<EventParams<EmitEvents, Ev>>
      ) => Promise<FirstNonErrorArg<Last<EventParams<EmitEvents, Ev>>>>;
      • Emits an event and waits for an acknowledgement from all clients.

        Example 1

        try { const responses = await io.timeout(1000).emitWithAck("some-event"); console.log(responses); // one response per client } catch (e) { // some clients did not acknowledge the event in the given delay }

        a Promise that will be fulfilled when all clients have acknowledged the event

      method except

      except: (room: Room | Room[]) => BroadcastOperator<EmitEvents, SocketData>;
      • Excludes a room when emitting.

        Parameter room

        a room, or an array of rooms a new BroadcastOperator instance for chaining

        Example 1

        // the "foo" event will be broadcast to all connected clients, except the ones that are in the "room-101" room io.except("room-101").emit("foo", "bar");

        // with an array of rooms io.except(["room-101", "room-102"]).emit("foo", "bar");

        // with multiple chained calls io.except("room-101").except("room-102").emit("foo", "bar");

      method fetchSockets

      fetchSockets: () => Promise<RemoteSocket<EmitEvents, SocketData>[]>;
      • Returns the matching socket instances. This method works across a cluster of several Socket.IO servers.

        Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

        Example 1

        // return all Socket instances const sockets = await io.fetchSockets();

        // return all Socket instances in the "room1" room const sockets = await io.in("room1").fetchSockets();

        for (const socket of sockets) { console.log(socket.id); console.log(socket.handshake); console.log(socket.rooms); console.log(socket.data);

        socket.emit("hello"); socket.join("room1"); socket.leave("room2"); socket.disconnect(); }

      method in

      in: (room: Room | Room[]) => BroadcastOperator<EmitEvents, SocketData>;
      • Targets a room when emitting. Similar to to(), but might feel clearer in some cases:

        Parameter room

        a room, or an array of rooms a new BroadcastOperator instance for chaining

        Example 1

        // disconnect all clients in the "room-101" room io.in("room-101").disconnectSockets();

      method socketsJoin

      socketsJoin: (room: Room | Room[]) => void;
      • Makes the matching socket instances join the specified rooms.

        Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

        Parameter room

        a room, or an array of rooms

        Example 1

        // make all socket instances join the "room1" room io.socketsJoin("room1");

        // make all socket instances in the "room1" room join the "room2" and "room3" rooms io.in("room1").socketsJoin(["room2", "room3"]);

      method socketsLeave

      socketsLeave: (room: Room | Room[]) => void;
      • Makes the matching socket instances leave the specified rooms.

        Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

        Parameter room

        a room, or an array of rooms

        Example 1

        // make all socket instances leave the "room1" room io.socketsLeave("room1");

        // make all socket instances in the "room1" room leave the "room2" and "room3" rooms io.in("room1").socketsLeave(["room2", "room3"]);

      method timeout

      timeout: (
      timeout: number
      ) => BroadcastOperator<DecorateAcknowledgements<EmitEvents>, SocketData>;
      • Adds a timeout in milliseconds for the next operation

        Parameter timeout

        Example 1

        io.timeout(1000).emit("some-event", (err, responses) => { if (err) { // some clients did not acknowledge the event in the given delay } else { console.log(responses); // one response per client } });

      method to

      to: (room: Room | Room[]) => BroadcastOperator<EmitEvents, SocketData>;
      • Targets a room when emitting.

        Parameter room

        a room, or an array of rooms a new BroadcastOperator instance for chaining

        Example 1

        // the “foo” event will be broadcast to all connected clients in the “room-101” room io.to("room-101").emit("foo", "bar");

        // with an array of rooms (a client will be notified at most once) io.to(["room-101", "room-102"]).emit("foo", "bar");

        // with multiple chained calls io.to("room-101").to("room-102").emit("foo", "bar");

      class Namespace

      class Namespace<
      ListenEvents extends EventsMap = DefaultEventsMap,
      EmitEvents extends EventsMap = ListenEvents,
      ServerSideEvents extends EventsMap = DefaultEventsMap,
      SocketData = any
      > extends StrictEventEmitter<
      ServerSideEvents,
      RemoveAcknowledgements<EmitEvents>,
      NamespaceReservedEventsMap<
      ListenEvents,
      EmitEvents,
      ServerSideEvents,
      SocketData
      >
      > {}
      • A Namespace is a communication channel that allows you to split the logic of your application over a single shared connection.

        Each namespace has its own:

        - event handlers

        io.of("/orders").on("connection", (socket) => {
        socket.on("order:list", () => {});
        socket.on("order:create", () => {});
        });
        io.of("/users").on("connection", (socket) => {
        socket.on("user:list", () => {});
        });

        - rooms

        const orderNamespace = io.of("/orders");
        orderNamespace.on("connection", (socket) => {
        socket.join("room1");
        orderNamespace.to("room1").emit("hello");
        });
        const userNamespace = io.of("/users");
        userNamespace.on("connection", (socket) => {
        socket.join("room1"); // distinct from the room in the "orders" namespace
        userNamespace.to("room1").emit("holà");
        });

        - middlewares

        const orderNamespace = io.of("/orders");
        orderNamespace.use((socket, next) => {
        // ensure the socket has access to the "orders" namespace
        });
        const userNamespace = io.of("/users");
        userNamespace.use((socket, next) => {
        // ensure the socket has access to the "users" namespace
        });

      constructor

      constructor(
      server: Server<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
      name: string
      );
      • Namespace constructor.

        Parameter server

        instance

        Parameter name

      property adapter

      adapter: Adapter;

        property local

        readonly local: BroadcastOperator<
        DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
        SocketData
        >;
        • Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node.

          Example 1

          const myNamespace = io.of("/my-namespace");

          // the “foo” event will be broadcast to all connected clients on this node myNamespace.local.emit("foo", "bar");

          a new BroadcastOperator instance for chaining

        property name

        readonly name: string;

          property server

          readonly server: Server<ListenEvents, EmitEvents, ServerSideEvents, SocketData>;

          property sockets

          readonly sockets: Map<
          SocketId,
          Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
          >;

            property volatile

            readonly volatile: BroadcastOperator<
            DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
            SocketData
            >;
            • Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to receive messages (because of network slowness or other issues, or because they’re connected through long polling and is in the middle of a request-response cycle).

              Example 1

              const myNamespace = io.of("/my-namespace");

              myNamespace.volatile.emit("hello"); // the clients may or may not receive it

              self

            method allSockets

            allSockets: () => Promise<Set<SocketId>>;

            method compress

            compress: (
            compress: boolean
            ) => BroadcastOperator<
            DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
            SocketData
            >;
            • Sets the compress flag.

              Parameter compress

              if true, compresses the sending data self

              Example 1

              const myNamespace = io.of("/my-namespace");

              myNamespace.compress(false).emit("hello");

            method disconnectSockets

            disconnectSockets: (close?: boolean) => void;
            • Makes the matching socket instances disconnect.

              Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

              Parameter close

              whether to close the underlying connection

              Example 1

              const myNamespace = io.of("/my-namespace");

              // make all socket instances disconnect (the connections might be kept alive for other namespaces) myNamespace.disconnectSockets();

              // make all socket instances in the "room1" room disconnect and close the underlying connections myNamespace.in("room1").disconnectSockets(true);

            method emit

            emit: <
            Ev extends IfAny<
            | EmitEvents[EventNames<EmitEvents>]
            | Last<Parameters<EmitEvents[EventNames<EmitEvents>]>>,
            EventNames<EmitEvents>,
            | (keyof EmitEvents & string extends (
            Parameters<EmitEvents[keyof EmitEvents & string]> extends never[]
            ? keyof EmitEvents & string
            : never
            )
            ? (Parameters<
            EmitEvents[keyof EmitEvents & string]
            > extends never[]
            ? keyof EmitEvents & string
            : never) &
            keyof EmitEvents &
            string
            : keyof EmitEvents & string extends (
            Last<
            Parameters<EmitEvents[keyof EmitEvents & string]>
            > extends (...args: any[]) => any
            ? never
            : keyof EmitEvents & string
            )
            ? (Last<
            Parameters<EmitEvents[keyof EmitEvents & string]>
            > extends (...args: any[]) => any
            ? never
            : keyof EmitEvents & string) &
            keyof EmitEvents &
            string
            : never)
            | (keyof EmitEvents & symbol extends (
            Parameters<EmitEvents[keyof EmitEvents & symbol]> extends never[]
            ? keyof EmitEvents & symbol
            : never
            )
            ? (Parameters<
            EmitEvents[keyof EmitEvents & symbol]
            > extends never[]
            ? keyof EmitEvents & symbol
            : never) &
            keyof EmitEvents &
            symbol
            : keyof EmitEvents & symbol extends (
            Last<
            Parameters<EmitEvents[keyof EmitEvents & symbol]>
            > extends (...args: any[]) => any
            ? never
            : keyof EmitEvents & symbol
            )
            ? (Last<
            Parameters<EmitEvents[keyof EmitEvents & symbol]>
            > extends (...args: any[]) => any
            ? never
            : keyof EmitEvents & symbol) &
            keyof EmitEvents &
            symbol
            : never)
            >
            >(
            ev: Ev,
            ...args: EventParams<EmitEvents, Ev>
            ) => boolean;
            • Emits to all connected clients.

              Example 1

              const myNamespace = io.of("/my-namespace");

              myNamespace.emit("hello", "world");

              // all serializable datastructures are supported (no need to call JSON.stringify) myNamespace.emit("hello", 1, "2", { 3: ["4"], 5: Uint8Array.from([6]) });

              // with an acknowledgement from the clients myNamespace.timeout(1000).emit("some-event", (err, responses) => { if (err) { // some clients did not acknowledge the event in the given delay } else { console.log(responses); // one response per client } });

              Always true

            method except

            except: (
            room: Room | Room[]
            ) => BroadcastOperator<
            DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
            SocketData
            >;
            • Excludes a room when emitting.

              Parameter room

              a room, or an array of rooms a new BroadcastOperator instance for chaining

              Example 1

              const myNamespace = io.of("/my-namespace");

              // the "foo" event will be broadcast to all connected clients, except the ones that are in the "room-101" room myNamespace.except("room-101").emit("foo", "bar");

              // with an array of rooms myNamespace.except(["room-101", "room-102"]).emit("foo", "bar");

              // with multiple chained calls myNamespace.except("room-101").except("room-102").emit("foo", "bar");

            method fetchSockets

            fetchSockets: () => Promise<
            import('./broadcast-operator').RemoteSocket<EmitEvents, SocketData>[]
            >;
            • Returns the matching socket instances.

              Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

              Example 1

              const myNamespace = io.of("/my-namespace");

              // return all Socket instances const sockets = await myNamespace.fetchSockets();

              // return all Socket instances in the "room1" room const sockets = await myNamespace.in("room1").fetchSockets();

              for (const socket of sockets) { console.log(socket.id); console.log(socket.handshake); console.log(socket.rooms); console.log(socket.data);

              socket.emit("hello"); socket.join("room1"); socket.leave("room2"); socket.disconnect(); }

            method in

            in: (
            room: Room | Room[]
            ) => BroadcastOperator<
            DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
            SocketData
            >;
            • Targets a room when emitting. Similar to to(), but might feel clearer in some cases:

              Parameter room

              a room, or an array of rooms a new BroadcastOperator instance for chaining

              Example 1

              const myNamespace = io.of("/my-namespace");

              // disconnect all clients in the "room-101" room myNamespace.in("room-101").disconnectSockets();

            method send

            send: (...args: EventParams<EmitEvents, 'message'>) => this;
            • Sends a message event to all clients.

              This method mimics the WebSocket.send() method.

              Example 1

              const myNamespace = io.of("/my-namespace");

              myNamespace.send("hello");

              // this is equivalent to myNamespace.emit("message", "hello");

              self

              See Also

              • https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send

            method serverSideEmit

            serverSideEmit: <Ev extends EventNames<ServerSideEvents>>(
            ev: Ev,
            ...args: EventParams<
            DecorateAcknowledgementsWithTimeoutAndMultipleResponses<ServerSideEvents>,
            Ev
            >
            ) => boolean;
            • Sends a message to the other Socket.IO servers of the cluster.

              Parameter ev

              the event name

              Parameter args

              an array of arguments, which may include an acknowledgement callback at the end

              Example 1

              const myNamespace = io.of("/my-namespace");

              myNamespace.serverSideEmit("hello", "world");

              myNamespace.on("hello", (arg1) => { console.log(arg1); // prints "world" });

              // acknowledgements (without binary content) are supported too: myNamespace.serverSideEmit("ping", (err, responses) => { if (err) { // some servers did not acknowledge the event in the given delay } else { console.log(responses); // one response per server (except the current one) } });

              myNamespace.on("ping", (cb) => { cb("pong"); });

            method serverSideEmitWithAck

            serverSideEmitWithAck: <
            Ev extends IfAny<
            | ServerSideEvents[EventNames<ServerSideEvents>]
            | Last<Parameters<ServerSideEvents[EventNames<ServerSideEvents>]>>,
            EventNames<ServerSideEvents>,
            | (keyof ServerSideEvents & string extends (
            Last<
            Parameters<ServerSideEvents[keyof ServerSideEvents & string]>
            > extends (...args: any[]) => any
            ? FirstNonErrorArg<
            ((...args: any[]) => any) &
            Last<
            Parameters<
            ServerSideEvents[keyof ServerSideEvents &
            string]
            >
            >
            > extends void
            ? never
            : keyof ServerSideEvents & string
            : never
            )
            ? (Last<
            Parameters<ServerSideEvents[keyof ServerSideEvents & string]>
            > extends (...args: any[]) => any
            ? FirstNonErrorArg<
            ((...args: any[]) => any) &
            Last<
            Parameters<
            ServerSideEvents[keyof ServerSideEvents &
            string]
            >
            >
            > extends void
            ? never
            : keyof ServerSideEvents & string
            : never) &
            keyof ServerSideEvents &
            string
            : never)
            | (keyof ServerSideEvents & symbol extends (
            Last<
            Parameters<ServerSideEvents[keyof ServerSideEvents & symbol]>
            > extends (...args: any[]) => any
            ? FirstNonErrorArg<
            ((...args: any[]) => any) &
            Last<
            Parameters<
            ServerSideEvents[keyof ServerSideEvents &
            symbol]
            >
            >
            > extends void
            ? never
            : keyof ServerSideEvents & symbol
            : never
            )
            ? (Last<
            Parameters<ServerSideEvents[keyof ServerSideEvents & symbol]>
            > extends (...args: any[]) => any
            ? FirstNonErrorArg<
            ((...args: any[]) => any) &
            Last<
            Parameters<
            ServerSideEvents[keyof ServerSideEvents &
            symbol]
            >
            >
            > extends void
            ? never
            : keyof ServerSideEvents & symbol
            : never) &
            keyof ServerSideEvents &
            symbol
            : never)
            >
            >(
            ev: Ev,
            ...args: AllButLast<EventParams<ServerSideEvents, Ev>>
            ) => Promise<FirstNonErrorArg<Last<EventParams<ServerSideEvents, Ev>>>[]>;
            • Sends a message and expect an acknowledgement from the other Socket.IO servers of the cluster.

              Parameter ev

              the event name

              Parameter args

              an array of arguments

              a Promise that will be fulfilled when all servers have acknowledged the event

              Example 1

              const myNamespace = io.of("/my-namespace");

              try { const responses = await myNamespace.serverSideEmitWithAck("ping"); console.log(responses); // one response per server (except the current one) } catch (e) { // some servers did not acknowledge the event in the given delay }

            method socketsJoin

            socketsJoin: (room: Room | Room[]) => void;
            • Makes the matching socket instances join the specified rooms.

              Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

              Parameter room

              a room, or an array of rooms

              Example 1

              const myNamespace = io.of("/my-namespace");

              // make all socket instances join the "room1" room myNamespace.socketsJoin("room1");

              // make all socket instances in the "room1" room join the "room2" and "room3" rooms myNamespace.in("room1").socketsJoin(["room2", "room3"]);

            method socketsLeave

            socketsLeave: (room: Room | Room[]) => void;
            • Makes the matching socket instances leave the specified rooms.

              Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

              Parameter room

              a room, or an array of rooms

              Example 1

              const myNamespace = io.of("/my-namespace");

              // make all socket instances leave the "room1" room myNamespace.socketsLeave("room1");

              // make all socket instances in the "room1" room leave the "room2" and "room3" rooms myNamespace.in("room1").socketsLeave(["room2", "room3"]);

            method timeout

            timeout: (
            timeout: number
            ) => BroadcastOperator<
            DecorateAcknowledgements<
            DecorateAcknowledgementsWithMultipleResponses<EmitEvents>
            >,
            SocketData
            >;
            • Adds a timeout in milliseconds for the next operation.

              Parameter timeout

              Example 1

              const myNamespace = io.of("/my-namespace");

              myNamespace.timeout(1000).emit("some-event", (err, responses) => { if (err) { // some clients did not acknowledge the event in the given delay } else { console.log(responses); // one response per client } });

            method to

            to: (
            room: Room | Room[]
            ) => BroadcastOperator<
            DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
            SocketData
            >;
            • Targets a room when emitting.

              Parameter room

              a room, or an array of rooms a new BroadcastOperator instance for chaining

              Example 1

              const myNamespace = io.of("/my-namespace");

              // the “foo” event will be broadcast to all connected clients in the “room-101” room myNamespace.to("room-101").emit("foo", "bar");

              // with an array of rooms (a client will be notified at most once) myNamespace.to(["room-101", "room-102"]).emit("foo", "bar");

              // with multiple chained calls myNamespace.to("room-101").to("room-102").emit("foo", "bar");

            method use

            use: (
            fn: (
            socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
            next: (err?: ExtendedError) => void
            ) => void
            ) => this;
            • Registers a middleware, which is a function that gets executed for every incoming Socket.

              Parameter fn

              the middleware function

              Example 1

              const myNamespace = io.of("/my-namespace");

              myNamespace.use((socket, next) => { // ... next(); });

            method write

            write: (...args: EventParams<EmitEvents, 'message'>) => this;
            • Sends a message event to all clients. Sends a message event. Alias of send.

              self

            class RemoteSocket

            class RemoteSocket<EmitEvents extends EventsMap, SocketData>
            implements TypedEventBroadcaster<EmitEvents> {}
            • Expose of subset of the attributes and methods of the Socket class

            constructor

            constructor(adapter: Adapter, details: SocketDetails<SocketData>);

              property data

              readonly data: {};

                property handshake

                readonly handshake: Handshake;

                  property id

                  readonly id: SocketId;

                    property rooms

                    readonly rooms: Set<Room>;

                      method disconnect

                      disconnect: (close?: boolean) => this;
                      • Disconnects this client.

                        Parameter close

                        if true, closes the underlying connection {Socket} self

                      method emit

                      emit: <Ev extends EventNames<EmitEvents>>(
                      ev: Ev,
                      ...args: EventParams<EmitEvents, Ev>
                      ) => boolean;

                        method join

                        join: (room: Room | Room[]) => void;
                        • Joins a room.

                          Parameter room

                          room or array of rooms

                        method leave

                        leave: (room: Room) => void;
                        • Leaves a room.

                          Parameter room

                        method timeout

                        timeout: (
                        timeout: number
                        ) => BroadcastOperator<DecorateAcknowledgements<EmitEvents>, SocketData>;
                        • Adds a timeout in milliseconds for the next operation.

                          Parameter timeout

                          Example 1

                          const sockets = await io.fetchSockets();

                          for (const socket of sockets) { if (someCondition) { socket.timeout(1000).emit("some-event", (err) => { if (err) { // the client did not acknowledge the event in the given delay } }); } }

                          // note: if possible, using a room instead of looping over all sockets is preferable io.timeout(1000).to(someConditionRoom).emit("some-event", (err, responses) => { // ... });

                        class Server

                        class Server<
                        ListenEvents extends EventsMap = DefaultEventsMap,
                        EmitEvents extends EventsMap = ListenEvents,
                        ServerSideEvents extends EventsMap = DefaultEventsMap,
                        SocketData = any
                        > extends StrictEventEmitter<
                        ServerSideEvents,
                        RemoveAcknowledgements<EmitEvents>,
                        ServerReservedEventsMap<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
                        > {}
                        • Represents a Socket.IO server.

                          Example 1

                          import { Server } from "socket.io";

                          const io = new Server();

                          io.on("connection", (socket) => { console.log(socket ${socket.id} connected);

                          // send an event to the client socket.emit("foo", "bar");

                          socket.on("foobar", () => { // an event was received from the client });

                          // upon disconnection socket.on("disconnect", (reason) => { console.log(socket ${socket.id} disconnected due to ${reason}); }); });

                          io.listen(3000);

                        constructor

                        constructor(opts?: Partial<ServerOptions>);
                        • Server constructor.

                          Parameter srv

                          http server, port, or options

                          Parameter opts

                        constructor

                        constructor(srv?: any, opts?: Partial<ServerOptions>);

                          constructor

                          constructor(srv: any, opts?: Partial<ServerOptions>);

                            property encoder

                            readonly encoder: Encoder;

                            property engine

                            engine: BaseServer;
                            • A reference to the underlying Engine.IO server.

                              Example 1

                              const clientsCount = io.engine.clientsCount;

                            property local

                            readonly local: BroadcastOperator<
                            DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
                            SocketData
                            >;
                            • Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node.

                              Example 1

                              // the “foo” event will be broadcast to all connected clients on this node io.local.emit("foo", "bar");

                              a new BroadcastOperator instance for chaining

                            property sockets

                            readonly sockets: Namespace<
                            ListenEvents,
                            EmitEvents,
                            ServerSideEvents,
                            SocketData
                            >;

                              property volatile

                              readonly volatile: BroadcastOperator<
                              DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
                              SocketData
                              >;
                              • Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to receive messages (because of network slowness or other issues, or because they’re connected through long polling and is in the middle of a request-response cycle).

                                Example 1

                                io.volatile.emit("hello"); // the clients may or may not receive it

                                a new BroadcastOperator instance for chaining

                              method adapter

                              adapter: { (): AdapterConstructor | undefined; (v: any): this };
                              • Sets the adapter for rooms.

                                Parameter v

                                pathname self when setting or value when getting

                              method allSockets

                              allSockets: () => Promise<Set<SocketId>>;

                              method attach

                              attach: (srv: TServerInstance | number, opts?: Partial<ServerOptions>) => this;
                              • Attaches socket.io to a server or port.

                                Parameter srv

                                server or port

                                Parameter opts

                                options passed to engine.io self

                              method attachApp

                              attachApp: (app: any, opts?: Partial<ServerOptions>) => void;

                                method bind

                                bind: (engine: BaseServer) => this;
                                • Binds socket.io to an engine.io instance.

                                  Parameter engine

                                  engine.io (or compatible) server self

                                method close

                                close: (fn?: (err?: Error) => void) => void;
                                • Closes server connection

                                  Parameter fn

                                  optional, called as fn([err]) on error OR all conns closed

                                method compress

                                compress: (
                                compress: boolean
                                ) => BroadcastOperator<
                                import('./typed-events').DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
                                SocketData
                                >;
                                • Sets the compress flag.

                                  Parameter compress

                                  if true, compresses the sending data a new BroadcastOperator instance for chaining

                                  Example 1

                                  io.compress(false).emit("hello");

                                method connectTimeout

                                connectTimeout: { (v: number): this; (): number; (v?: number): number | this };
                                • Set the delay after which a client without namespace is closed

                                  Parameter v

                                method disconnectSockets

                                disconnectSockets: (close?: boolean) => void;
                                • Makes the matching socket instances disconnect.

                                  Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

                                  Parameter close

                                  whether to close the underlying connection

                                  Example 1

                                  // make all socket instances disconnect (the connections might be kept alive for other namespaces) io.disconnectSockets();

                                  // make all socket instances in the "room1" room disconnect and close the underlying connections io.in("room1").disconnectSockets(true);

                                method except

                                except: (
                                room: Room | Room[]
                                ) => BroadcastOperator<
                                import('./typed-events').DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
                                SocketData
                                >;
                                • Excludes a room when emitting.

                                  Parameter room

                                  a room, or an array of rooms a new BroadcastOperator instance for chaining

                                  Example 1

                                  // the "foo" event will be broadcast to all connected clients, except the ones that are in the "room-101" room io.except("room-101").emit("foo", "bar");

                                  // with an array of rooms io.except(["room-101", "room-102"]).emit("foo", "bar");

                                  // with multiple chained calls io.except("room-101").except("room-102").emit("foo", "bar");

                                method fetchSockets

                                fetchSockets: () => Promise<RemoteSocket<EmitEvents, SocketData>[]>;
                                • Returns the matching socket instances.

                                  Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

                                  Example 1

                                  // return all Socket instances const sockets = await io.fetchSockets();

                                  // return all Socket instances in the "room1" room const sockets = await io.in("room1").fetchSockets();

                                  for (const socket of sockets) { console.log(socket.id); console.log(socket.handshake); console.log(socket.rooms); console.log(socket.data);

                                  socket.emit("hello"); socket.join("room1"); socket.leave("room2"); socket.disconnect(); }

                                method in

                                in: (
                                room: Room | Room[]
                                ) => BroadcastOperator<
                                import('./typed-events').DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
                                SocketData
                                >;
                                • Targets a room when emitting. Similar to to(), but might feel clearer in some cases:

                                  Parameter room

                                  a room, or an array of rooms a new BroadcastOperator instance for chaining

                                  Example 1

                                  // disconnect all clients in the "room-101" room io.in("room-101").disconnectSockets();

                                method listen

                                listen: (srv: TServerInstance | number, opts?: Partial<ServerOptions>) => this;
                                • Attaches socket.io to a server or port.

                                  Parameter srv

                                  server or port

                                  Parameter opts

                                  options passed to engine.io self

                                method of

                                of: (
                                name: string | RegExp | ParentNspNameMatchFn,
                                fn?: (
                                socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
                                ) => void
                                ) => Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData>;
                                • Looks up a namespace.

                                  Parameter name

                                  nsp name

                                  Parameter fn

                                  optional, nsp connection ev handler

                                  Example 1

                                  // with a simple string const myNamespace = io.of("/my-namespace");

                                  // with a regex const dynamicNsp = io.of(/^/dynamic-\d+$/).on("connection", (socket) => { const namespace = socket.nsp; // newNamespace.name === "/dynamic-101"

                                  // broadcast to all clients in the given sub-namespace namespace.emit("hello"); });

                                method path

                                path: { (v: string): this; (): string; (v?: string): string | this };
                                • Sets the client serving path.

                                  Parameter v

                                  pathname {Server|String} self when setting or value when getting

                                method send

                                send: (...args: EventParams<EmitEvents, 'message'>) => this;
                                • Sends a message event to all clients.

                                  This method mimics the WebSocket.send() method.

                                  Example 1

                                  io.send("hello");

                                  // this is equivalent to io.emit("message", "hello");

                                  self

                                  See Also

                                  • https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send

                                method serveClient

                                serveClient: { (v: boolean): this; (): boolean; (v?: boolean): boolean | this };
                                • Sets/gets whether client code is being served.

                                  Parameter v

                                  whether to serve client code self when setting or value when getting

                                method serverSideEmit

                                serverSideEmit: <Ev extends EventNames<ServerSideEvents>>(
                                ev: Ev,
                                ...args: EventParams<
                                DecorateAcknowledgementsWithTimeoutAndMultipleResponses<ServerSideEvents>,
                                Ev
                                >
                                ) => boolean;
                                • Sends a message to the other Socket.IO servers of the cluster.

                                  Parameter ev

                                  the event name

                                  Parameter args

                                  an array of arguments, which may include an acknowledgement callback at the end

                                  Example 1

                                  io.serverSideEmit("hello", "world");

                                  io.on("hello", (arg1) => { console.log(arg1); // prints "world" });

                                  // acknowledgements (without binary content) are supported too: io.serverSideEmit("ping", (err, responses) => { if (err) { // some servers did not acknowledge the event in the given delay } else { console.log(responses); // one response per server (except the current one) } });

                                  io.on("ping", (cb) => { cb("pong"); });

                                method serverSideEmitWithAck

                                serverSideEmitWithAck: <
                                Ev extends IfAny<
                                | ServerSideEvents[EventNames<ServerSideEvents>]
                                | Last<Parameters<ServerSideEvents[EventNames<ServerSideEvents>]>>,
                                EventNames<ServerSideEvents>,
                                | (keyof ServerSideEvents & string extends (
                                Last<
                                Parameters<ServerSideEvents[keyof ServerSideEvents & string]>
                                > extends (...args: any[]) => any
                                ? FirstNonErrorArg<
                                ((...args: any[]) => any) &
                                Last<
                                Parameters<
                                ServerSideEvents[keyof ServerSideEvents &
                                string]
                                >
                                >
                                > extends void
                                ? never
                                : keyof ServerSideEvents & string
                                : never
                                )
                                ? (Last<
                                Parameters<ServerSideEvents[keyof ServerSideEvents & string]>
                                > extends (...args: any[]) => any
                                ? FirstNonErrorArg<
                                ((...args: any[]) => any) &
                                Last<
                                Parameters<
                                ServerSideEvents[keyof ServerSideEvents &
                                string]
                                >
                                >
                                > extends void
                                ? never
                                : keyof ServerSideEvents & string
                                : never) &
                                keyof ServerSideEvents &
                                string
                                : never)
                                | (keyof ServerSideEvents & symbol extends (
                                Last<
                                Parameters<ServerSideEvents[keyof ServerSideEvents & symbol]>
                                > extends (...args: any[]) => any
                                ? FirstNonErrorArg<
                                ((...args: any[]) => any) &
                                Last<
                                Parameters<
                                ServerSideEvents[keyof ServerSideEvents &
                                symbol]
                                >
                                >
                                > extends void
                                ? never
                                : keyof ServerSideEvents & symbol
                                : never
                                )
                                ? (Last<
                                Parameters<ServerSideEvents[keyof ServerSideEvents & symbol]>
                                > extends (...args: any[]) => any
                                ? FirstNonErrorArg<
                                ((...args: any[]) => any) &
                                Last<
                                Parameters<
                                ServerSideEvents[keyof ServerSideEvents &
                                symbol]
                                >
                                >
                                > extends void
                                ? never
                                : keyof ServerSideEvents & symbol
                                : never) &
                                keyof ServerSideEvents &
                                symbol
                                : never)
                                >
                                >(
                                ev: Ev,
                                ...args: AllButLast<EventParams<ServerSideEvents, Ev>>
                                ) => Promise<FirstNonErrorArg<Last<EventParams<ServerSideEvents, Ev>>>[]>;
                                • Sends a message and expect an acknowledgement from the other Socket.IO servers of the cluster.

                                  Parameter ev

                                  the event name

                                  Parameter args

                                  an array of arguments

                                  a Promise that will be fulfilled when all servers have acknowledged the event

                                  Example 1

                                  try { const responses = await io.serverSideEmitWithAck("ping"); console.log(responses); // one response per server (except the current one) } catch (e) { // some servers did not acknowledge the event in the given delay }

                                method socketsJoin

                                socketsJoin: (room: Room | Room[]) => void;
                                • Makes the matching socket instances join the specified rooms.

                                  Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

                                  Parameter room

                                  a room, or an array of rooms

                                  Example 1

                                  // make all socket instances join the "room1" room io.socketsJoin("room1");

                                  // make all socket instances in the "room1" room join the "room2" and "room3" rooms io.in("room1").socketsJoin(["room2", "room3"]);

                                method socketsLeave

                                socketsLeave: (room: Room | Room[]) => void;
                                • Makes the matching socket instances leave the specified rooms.

                                  Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible Adapter.

                                  Parameter room

                                  a room, or an array of rooms

                                  Example 1

                                  // make all socket instances leave the "room1" room io.socketsLeave("room1");

                                  // make all socket instances in the "room1" room leave the "room2" and "room3" rooms io.in("room1").socketsLeave(["room2", "room3"]);

                                method timeout

                                timeout: (
                                timeout: number
                                ) => BroadcastOperator<
                                import('./typed-events').DecorateAcknowledgements<
                                import('./typed-events').DecorateAcknowledgementsWithMultipleResponses<EmitEvents>
                                >,
                                SocketData
                                >;
                                • Adds a timeout in milliseconds for the next operation.

                                  Parameter timeout

                                  Example 1

                                  io.timeout(1000).emit("some-event", (err, responses) => { if (err) { // some clients did not acknowledge the event in the given delay } else { console.log(responses); // one response per client } });

                                method to

                                to: (
                                room: Room | Room[]
                                ) => BroadcastOperator<
                                import('./typed-events').DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
                                SocketData
                                >;
                                • Targets a room when emitting.

                                  Parameter room

                                  a room, or an array of rooms a new BroadcastOperator instance for chaining

                                  Example 1

                                  // the “foo” event will be broadcast to all connected clients in the “room-101” room io.to("room-101").emit("foo", "bar");

                                  // with an array of rooms (a client will be notified at most once) io.to(["room-101", "room-102"]).emit("foo", "bar");

                                  // with multiple chained calls io.to("room-101").to("room-102").emit("foo", "bar");

                                method use

                                use: (
                                fn: (
                                socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
                                next: (err?: ExtendedError) => void
                                ) => void
                                ) => this;
                                • Registers a middleware, which is a function that gets executed for every incoming Socket.

                                  Parameter fn

                                  the middleware function

                                  Example 1

                                  io.use((socket, next) => { // ... next(); });

                                method write

                                write: (...args: EventParams<EmitEvents, 'message'>) => this;
                                • Sends a message event to all clients. Alias of send.

                                  self

                                class Socket

                                class Socket<
                                ListenEvents extends EventsMap = DefaultEventsMap,
                                EmitEvents extends EventsMap = ListenEvents,
                                ServerSideEvents extends EventsMap = DefaultEventsMap,
                                SocketData = any
                                > extends StrictEventEmitter<ListenEvents, EmitEvents, SocketReservedEventsMap> {}
                                • This is the main object for interacting with a client.

                                  A Socket belongs to a given Namespace and uses an underlying Client to communicate.

                                  Within each Namespace, you can also define arbitrary channels (called "rooms") that the Socket can join and leave. That provides a convenient way to broadcast to a group of socket instances.

                                  Example 1

                                  io.on("connection", (socket) => { console.log(socket ${socket.id} connected);

                                  // send an event to the client socket.emit("foo", "bar");

                                  socket.on("foobar", () => { // an event was received from the client });

                                  // join the room named "room1" socket.join("room1");

                                  // broadcast to everyone in the room named "room1" io.to("room1").emit("hello");

                                  // upon disconnection socket.on("disconnect", (reason) => { console.log(socket ${socket.id} disconnected due to ${reason}); }); });

                                constructor

                                constructor(
                                nsp: Namespace<ListenEvents, EmitEvents, ServerSideEvents, any>,
                                client: Client<ListenEvents, EmitEvents, ServerSideEvents, any>,
                                auth: Record<string, unknown>,
                                previousSession?: Session
                                );
                                • Interface to a Client for a given Namespace.

                                  Parameter nsp

                                  Parameter client

                                  Parameter auth

                                property broadcast

                                readonly broadcast: BroadcastOperator<
                                DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
                                SocketData
                                >;
                                • Sets a modifier for a subsequent event emission that the event data will only be broadcast to every sockets but the sender.

                                  Example 1

                                  io.on("connection", (socket) => { // the “foo” event will be broadcast to all connected clients, except this socket socket.broadcast.emit("foo", "bar"); });

                                  a new BroadcastOperator instance for chaining

                                property client

                                readonly client: Client<ListenEvents, EmitEvents, ServerSideEvents, any>;

                                  property conn

                                  readonly conn: any;
                                  • A reference to the underlying Client transport connection (Engine.IO Socket object).

                                    Example 1

                                    io.on("connection", (socket) => { console.log(socket.conn.transport.name); // prints "polling" or "websocket"

                                    socket.conn.once("upgrade", () => { console.log(socket.conn.transport.name); // prints "websocket" }); });

                                  property connected

                                  connected: boolean;
                                  • Whether the socket is currently connected or not.

                                    Example 1

                                    io.use((socket, next) => { console.log(socket.connected); // false next(); });

                                    io.on("connection", (socket) => { console.log(socket.connected); // true });

                                  property data

                                  data: {};
                                  • Additional information that can be attached to the Socket instance and which will be used in the method.

                                  property disconnected

                                  readonly disconnected: boolean;
                                  • Whether the socket is currently disconnected

                                  property handshake

                                  readonly handshake: Handshake;
                                  • The handshake details.

                                  property id

                                  readonly id: SocketId;
                                  • An unique identifier for the session.

                                  property local

                                  readonly local: BroadcastOperator<
                                  DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
                                  SocketData
                                  >;
                                  • Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node.

                                    Example 1

                                    io.on("connection", (socket) => { // the “foo” event will be broadcast to all connected clients on this node, except this socket socket.local.emit("foo", "bar"); });

                                    a new BroadcastOperator instance for chaining

                                  property nsp

                                  readonly nsp: Namespace<ListenEvents, EmitEvents, ServerSideEvents, any>;

                                    property recovered

                                    readonly recovered: boolean;
                                    • Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will be transmitted to the client, the data attribute and the rooms will be restored.

                                    property request

                                    readonly request: IncomingMessage;
                                    • A reference to the request that originated the underlying Engine.IO Socket.

                                    property rooms

                                    readonly rooms: Set<Room>;
                                    • Returns the rooms the socket is currently in.

                                      Example 1

                                      io.on("connection", (socket) => { console.log(socket.rooms); // Set { <socket.id> }

                                      socket.join("room1");

                                      console.log(socket.rooms); // Set { <socket.id>, "room1" } });

                                    property volatile

                                    readonly volatile: Socket<
                                    ListenEvents,
                                    EmitEvents,
                                    ServerSideEvents,
                                    SocketData
                                    >;
                                    • Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to receive messages (because of network slowness or other issues, or because they’re connected through long polling and is in the middle of a request-response cycle).

                                      Example 1

                                      io.on("connection", (socket) => { socket.volatile.emit("hello"); // the client may or may not receive it });

                                      {Socket} self

                                    method compress

                                    compress: (compress: boolean) => this;
                                    • Sets the compress flag.

                                      Parameter compress

                                      if true, compresses the sending data {Socket} self

                                      Example 1

                                      io.on("connection", (socket) => { socket.compress(false).emit("hello"); });

                                    method disconnect

                                    disconnect: (close?: boolean) => this;
                                    • Disconnects this client.

                                      Parameter close

                                      if true, closes the underlying connection self

                                      Example 1

                                      io.on("connection", (socket) => { // disconnect this socket (the connection might be kept alive for other namespaces) socket.disconnect();

                                      // disconnect this socket and close the underlying connection socket.disconnect(true); })

                                    method emit

                                    emit: <Ev extends EventNames<EmitEvents>>(
                                    ev: Ev,
                                    ...args: EventParams<EmitEvents, Ev>
                                    ) => boolean;
                                    • Emits to this client.

                                      Example 1

                                      io.on("connection", (socket) => { socket.emit("hello", "world");

                                      // all serializable datastructures are supported (no need to call JSON.stringify) socket.emit("hello", 1, "2", { 3: ["4"], 5: Buffer.from([6]) });

                                      // with an acknowledgement from the client socket.emit("hello", "world", (val) => { // ... }); });

                                      Always returns true.

                                    method emitWithAck

                                    emitWithAck: <
                                    Ev extends IfAny<
                                    | EmitEvents[EventNames<EmitEvents>]
                                    | Last<Parameters<EmitEvents[EventNames<EmitEvents>]>>,
                                    EventNames<EmitEvents>,
                                    | (keyof EmitEvents & string extends (
                                    Last<Parameters<EmitEvents[keyof EmitEvents & string]>> extends (
                                    ...args: any[]
                                    ) => any
                                    ? FirstNonErrorArg<
                                    ((...args: any[]) => any) &
                                    Last<
                                    Parameters<EmitEvents[keyof EmitEvents & string]>
                                    >
                                    > extends void
                                    ? never
                                    : keyof EmitEvents & string
                                    : never
                                    )
                                    ? (Last<
                                    Parameters<EmitEvents[keyof EmitEvents & string]>
                                    > extends (...args: any[]) => any
                                    ? FirstNonErrorArg<
                                    ((...args: any[]) => any) &
                                    Last<
                                    Parameters<
                                    EmitEvents[keyof EmitEvents & string]
                                    >
                                    >
                                    > extends void
                                    ? never
                                    : keyof EmitEvents & string
                                    : never) &
                                    keyof EmitEvents &
                                    string
                                    : never)
                                    | (keyof EmitEvents & symbol extends (
                                    Last<Parameters<EmitEvents[keyof EmitEvents & symbol]>> extends (
                                    ...args: any[]
                                    ) => any
                                    ? FirstNonErrorArg<
                                    ((...args: any[]) => any) &
                                    Last<
                                    Parameters<EmitEvents[keyof EmitEvents & symbol]>
                                    >
                                    > extends void
                                    ? never
                                    : keyof EmitEvents & symbol
                                    : never
                                    )
                                    ? (Last<
                                    Parameters<EmitEvents[keyof EmitEvents & symbol]>
                                    > extends (...args: any[]) => any
                                    ? FirstNonErrorArg<
                                    ((...args: any[]) => any) &
                                    Last<
                                    Parameters<
                                    EmitEvents[keyof EmitEvents & symbol]
                                    >
                                    >
                                    > extends void
                                    ? never
                                    : keyof EmitEvents & symbol
                                    : never) &
                                    keyof EmitEvents &
                                    symbol
                                    : never)
                                    >
                                    >(
                                    ev: Ev,
                                    ...args: AllButLast<EventParams<EmitEvents, Ev>>
                                    ) => Promise<FirstNonErrorArg<Last<EventParams<EmitEvents, Ev>>>>;
                                    • Emits an event and waits for an acknowledgement

                                      Example 1

                                      io.on("connection", async (socket) => { // without timeout const response = await socket.emitWithAck("hello", "world");

                                      // with a specific timeout try { const response = await socket.timeout(1000).emitWithAck("hello", "world"); } catch (err) { // the client did not acknowledge the event in the given delay } });

                                      a Promise that will be fulfilled when the client acknowledges the event

                                    method except

                                    except: (
                                    room: Room | Room[]
                                    ) => BroadcastOperator<
                                    DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
                                    SocketData
                                    >;
                                    • Excludes a room when broadcasting.

                                      Parameter room

                                      a room, or an array of rooms a new BroadcastOperator instance for chaining

                                      Example 1

                                      io.on("connection", (socket) => { // the "foo" event will be broadcast to all connected clients, except the ones that are in the "room-101" room // and this socket socket.except("room-101").emit("foo", "bar");

                                      // with an array of rooms socket.except(["room-101", "room-102"]).emit("foo", "bar");

                                      // with multiple chained calls socket.except("room-101").except("room-102").emit("foo", "bar"); });

                                    method in

                                    in: (
                                    room: Room | Room[]
                                    ) => BroadcastOperator<
                                    DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
                                    SocketData
                                    >;
                                    • Targets a room when broadcasting. Similar to to(), but might feel clearer in some cases:

                                      Parameter room

                                      a room, or an array of rooms a new BroadcastOperator instance for chaining

                                      Example 1

                                      io.on("connection", (socket) => { // disconnect all clients in the "room-101" room, except this socket socket.in("room-101").disconnectSockets(); });

                                    method join

                                    join: (rooms: Room | Array<Room>) => Promise<void> | void;
                                    • Joins a room.

                                      Parameter rooms

                                      room or array of rooms a Promise or nothing, depending on the adapter

                                      Example 1

                                      io.on("connection", (socket) => { // join a single room socket.join("room1");

                                      // join multiple rooms socket.join(["room1", "room2"]); });

                                    method leave

                                    leave: (room: string) => Promise<void> | void;
                                    • Leaves a room.

                                      Parameter room

                                      a Promise or nothing, depending on the adapter

                                      Example 1

                                      io.on("connection", (socket) => { // leave a single room socket.leave("room1");

                                      // leave multiple rooms socket.leave("room1").leave("room2"); });

                                    method listenersAny

                                    listenersAny: () => ((...args: any[]) => void)[];
                                    • Returns an array of listeners that are listening for any event that is specified. This array can be manipulated, e.g. to remove listeners.

                                    method listenersAnyOutgoing

                                    listenersAnyOutgoing: () => ((...args: any[]) => void)[];
                                    • Returns an array of listeners that are listening for any event that is specified. This array can be manipulated, e.g. to remove listeners.

                                    method offAny

                                    offAny: (listener?: (...args: any[]) => void) => this;
                                    • Removes the listener that will be fired when any event is received.

                                      Parameter listener

                                      Example 1

                                      io.on("connection", (socket) => { const catchAllListener = (event, ...args) => { console.log(got event ${event}); }

                                      socket.onAny(catchAllListener);

                                      // remove a specific listener socket.offAny(catchAllListener);

                                      // or remove all listeners socket.offAny(); });

                                    method offAnyOutgoing

                                    offAnyOutgoing: (listener?: (...args: any[]) => void) => this;
                                    • Removes the listener that will be fired when any event is sent.

                                      Parameter listener

                                      the catch-all listener

                                      Example 1

                                      io.on("connection", (socket) => { const catchAllListener = (event, ...args) => { console.log(sent event ${event}); }

                                      socket.onAnyOutgoing(catchAllListener);

                                      // remove a specific listener socket.offAnyOutgoing(catchAllListener);

                                      // or remove all listeners socket.offAnyOutgoing(); });

                                    method onAny

                                    onAny: (listener: (...args: any[]) => void) => this;
                                    • Adds a listener that will be fired when any event is received. The event name is passed as the first argument to the callback.

                                      Parameter listener

                                      Example 1

                                      io.on("connection", (socket) => { socket.onAny((event, ...args) => { console.log(got event ${event}); }); });

                                    method onAnyOutgoing

                                    onAnyOutgoing: (listener: (...args: any[]) => void) => this;
                                    • Adds a listener that will be fired when any event is sent. The event name is passed as the first argument to the callback.

                                      Note: acknowledgements sent to the client are not included.

                                      Parameter listener

                                      Example 1

                                      io.on("connection", (socket) => { socket.onAnyOutgoing((event, ...args) => { console.log(sent event ${event}); }); });

                                    method prependAny

                                    prependAny: (listener: (...args: any[]) => void) => this;
                                    • Adds a listener that will be fired when any event is received. The event name is passed as the first argument to the callback. The listener is added to the beginning of the listeners array.

                                      Parameter listener

                                    method prependAnyOutgoing

                                    prependAnyOutgoing: (listener: (...args: any[]) => void) => this;
                                    • Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the callback. The listener is added to the beginning of the listeners array.

                                      Parameter listener

                                      Example 1

                                      io.on("connection", (socket) => { socket.prependAnyOutgoing((event, ...args) => { console.log(sent event ${event}); }); });

                                    method send

                                    send: (...args: EventParams<EmitEvents, 'message'>) => this;
                                    • Sends a message event.

                                      This method mimics the WebSocket.send() method.

                                      Example 1

                                      io.on("connection", (socket) => { socket.send("hello");

                                      // this is equivalent to socket.emit("message", "hello"); });

                                      self

                                      See Also

                                      • https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send

                                    method timeout

                                    timeout: (
                                    timeout: number
                                    ) => Socket<
                                    ListenEvents,
                                    DecorateAcknowledgements<EmitEvents>,
                                    ServerSideEvents,
                                    SocketData
                                    >;
                                    • Sets a modifier for a subsequent event emission that the callback will be called with an error when the given number of milliseconds have elapsed without an acknowledgement from the client:

                                      Returns

                                      self

                                      Example 1

                                      io.on("connection", (socket) => { socket.timeout(5000).emit("my-event", (err) => { if (err) { // the client did not acknowledge the event in the given delay } }); });

                                    method to

                                    to: (
                                    room: Room | Room[]
                                    ) => BroadcastOperator<
                                    DecorateAcknowledgementsWithMultipleResponses<EmitEvents>,
                                    SocketData
                                    >;
                                    • Targets a room when broadcasting.

                                      Parameter room

                                      a room, or an array of rooms a new BroadcastOperator instance for chaining

                                      Example 1

                                      io.on("connection", (socket) => { // the “foo” event will be broadcast to all connected clients in the “room-101” room, except this socket socket.to("room-101").emit("foo", "bar");

                                      // the code above is equivalent to: io.to("room-101").except(socket.id).emit("foo", "bar");

                                      // with an array of rooms (a client will be notified at most once) socket.to(["room-101", "room-102"]).emit("foo", "bar");

                                      // with multiple chained calls socket.to("room-101").to("room-102").emit("foo", "bar"); });

                                    method use

                                    use: (fn: (event: Event, next: (err?: Error) => void) => void) => this;
                                    • Sets up socket middleware.

                                      Parameter fn

                                      middleware function (event, next) {Socket} self

                                      Example 1

                                      io.on("connection", (socket) => { socket.use(([event, ...args], next) => { if (isUnauthorized(event)) { return next(new Error("unauthorized event")); } // do not forget to call next next(); });

                                      socket.on("error", (err) => { if (err && err.message === "unauthorized event") { socket.disconnect(); } }); });

                                    method write

                                    write: (...args: EventParams<EmitEvents, 'message'>) => this;
                                    • Sends a message event. Alias of send.

                                      self

                                    Interfaces

                                    interface ServerOptions

                                    interface ServerOptions extends EngineOptions, AttachOptions {}

                                      property adapter

                                      adapter: AdapterConstructor;
                                      • the adapter to use the in-memory adapter (https://github.com/socketio/socket.io-adapter)

                                      property cleanupEmptyChildNamespaces

                                      cleanupEmptyChildNamespaces: boolean;
                                      • Whether to remove child namespaces that have no sockets connected to them false

                                      property connectionStateRecovery

                                      connectionStateRecovery: {
                                      /**
                                      * The backup duration of the sessions and the packets.
                                      *
                                      * @default 120000 (2 minutes)
                                      */
                                      maxDisconnectionDuration?: number;
                                      /**
                                      * Whether to skip middlewares upon successful connection state recovery.
                                      *
                                      * @default true
                                      */
                                      skipMiddlewares?: boolean;
                                      };
                                      • Whether to enable the recovery of connection state when a client temporarily disconnects.

                                        The connection state includes the missed packets, the rooms the socket was in and the data attribute.

                                      property connectTimeout

                                      connectTimeout: number;
                                      • how many ms before a client without namespace is closed 45000

                                      property parser

                                      parser: any;
                                      • the parser to use the default parser (https://github.com/socketio/socket.io-parser)

                                      property path

                                      path: string;
                                      • name of the path to capture "/socket.io"

                                      property serveClient

                                      serveClient: boolean;
                                      • whether to serve the client files true

                                      Type Aliases

                                      type DisconnectReason

                                      type DisconnectReason =
                                      | 'transport error'
                                      | 'transport close'
                                      | 'forced close'
                                      | 'ping timeout'
                                      | 'parse error'
                                      | 'server shutting down'
                                      | 'forced server close'
                                      | 'client namespace disconnect'
                                      | 'server namespace disconnect';

                                        type Event

                                        type Event = [string, ...any[]];
                                        • [eventName, ...args]

                                        Package Files (4)

                                        Dependencies (7)

                                        Dev Dependencies (14)

                                        Peer Dependencies (0)

                                        No peer dependencies.

                                        Badge

                                        To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

                                        You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/socket.io.

                                        • Markdown
                                          [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/socket.io)
                                        • HTML
                                          <a href="https://www.jsdocs.io/package/socket.io"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>