Class RPCServer

The RPCServer class extends RPCBase and implements GroupEmitter to provide a WebSocket-based RPC server with group management and JWT authentication support.

The WebSocket type used by the server.

Hierarchy

  • RPCBase<WebSocket>
    • RPCServer

Implements

Constructors

  • Creates an instance of RPCServer.

    Parameters

    • Optionalport: number

      The port number to listen on. If not provided, the server will operate in noServer mode.

    Returns RPCServer

Properties

calls: Map<number, (result: any, error: any) => void> = ...
clients: Set<WebSocket> = ...
currentID: number = 0
events: Map<string, Signal<(context: Context, ...args: any[]) => void>> = ...
functions: Map<string, (context: ServerContext, ...args: any[]) => any> = ...
groupRemoved: Map<string, () => void> = ...
groups: Map<string, Set<WebSocket>> = ...
pingTimeout: number = 30000
socketData: Map<WebSocket, SocketData> = ...
users: ServerUsers = ...
wss: WebSocketServer

The WebSocket server instance.

Methods

  • Parameters

    • ws: WebSocket
    • group: string

    Returns void

  • Type Parameters

    • T

    Parameters

    • ws: WebSocket
    • method: string
    • ...params: unknown[]

    Returns Promise<T>

  • Closes the WebSocket server.

    Returns void

  • Parameters

    • ws: WebSocket

    Returns ServerContext

  • Parameters

    • group: string

    Returns void

  • Parameters

    • ws: WebSocket
    • method: string
    • ...params: unknown[]

    Returns void

  • Emits an event to all members of a group.

    Parameters

    • group: string

      The name of the group.

    • method: string

      The name of the RPC method.

    • ...params: unknown[]

      The parameters to be passed to the RPC method.

    Returns void

  • Returns the number of members in a group.

    Parameters

    • group: string

      The name of the group.

    Returns number

    The number of members in the group.

  • Forwards the upgrade request to the WebSocket server. Useful if you have an existing HTTP server and want to handle WebSocket upgrades.

    Parameters

    • request: IncomingMessage
    • socket: Duplex
    • upgradeHead: Buffer

    Returns void

  • Iterates over all members of a group and calls a callback function for each member.

    Parameters

    • group: string

      The name of the group.

    • cb: (ctx: Context) => void

      The callback function to be called for each member.

    Returns void

  • Registers an event listener.

    Parameters

    • name: string

      The name of the event.

    • method: (context: Context, ...args: unknown[]) => void

      The function to be called when the event is emitted.

    Returns SignalConnection

    A SignalConnection object.

  • Parameters

    • ws: WebSocket

    Returns void

  • Parameters

    • ws: WebSocket

    Returns void

  • Registers a callback to be called when a group is removed.

    Parameters

    • group: string

      The name of the group.

    • method: undefined | () => void

      The callback function to be called when the group is removed.

    Returns void

  • Parameters

    • ws: WebSocket
    • data: RPCMessage

    Returns void

  • Parameters

    • ws: WebSocket

    Returns void

  • Parameters

    • ws: WebSocket
    • event: RPCEvent

    Returns void

  • Parameters

    • ws: WebSocket
    • data: RPCCall

    Returns void

  • Parameters

    • resp: RPCResponse

    Returns void

  • Registers a listener for changes in the user's connection status.

    Parameters

    • user: string

      The username to monitor for connection status changes.

    • listener: (connected: boolean) => void

      A callback function that is invoked when the user's connection status changes. The callback receives a boolean parameter indicating whether the user is connected (true) or disconnected (false).

    Returns () => void

    A function that can be called to remove the listener.

  • Parameters

    • ws: WebSocket
    • data: SocketData

    Returns void

  • Helper to register an authorized RPC function that requires user authentication.

    Parameters

    • name: string

      The name of the RPC function.

    • method: (context: Context, ...args: unknown[]) => unknown

      The function to be registered.

    Returns void

  • Registers an RPC function.

    Parameters

    • name: string

      The name of the RPC function.

    • method: (context: Context, ...args: any[]) => any

      The function to be registered.

    Returns void

  • Parameters

    • name: string
    • method: (context: ServerContext, ...args: any[]) => any

    Returns void

  • Registers a JWT authentication function.

    Parameters

    • authFunction: (token: string) => Promise<undefined | UserInfo>

      A function that takes a JWT token and returns a UserInfo object or undefined.

    Returns void

  • Parameters

    • ws: WebSocket

    Returns void

  • Parameters

    • ws: WebSocket
    • group: string

    Returns void

  • Parameters

    • ws: WebSocket
    • message: RPCMessage

    Returns void

  • Parameters

    • ws: WebSocket
    • id: number
    • error: unknown

    Returns void

  • Parameters

    • ws: WebSocket
    • id: number
    • result: unknown

    Returns void