ClientWebSocketOptions
Optional WebSocket settings applied when creating a client: constructor, beforeConnect hook, heartbeat, protocols, and reconnect policy.
@defjs/core · Type
Signature
interface ClientWebSocketOptions { handle?: WebSocketHandleConstructor; beforeConnect?: (context: { attempt: number; signal: AbortSignal; }) => void | Promise<void>; heartbeat?: { intervalMs: number; isAck?: (message: unknown) => boolean; message?: <T = unknown>() => T | unknown; timeoutMs?: number; }; protocols?: readonly string[]; reconnect?: { attempts?: number; delayMs?: number; factor?: number; jitter?: number; maxDelayMs?: number; shouldReconnect?: (context: { attempt: number; cause?: unknown; code?: number; reason?: string; wasClean?: boolean; }) => boolean; }; }
- handle — WebSocket constructor; defaults to
globalThis.WebSocket. - beforeConnect — Runs before each connect and reconnect attempt.
- heartbeat — Sends
message()everyintervalMs. WithtimeoutMsandisAck, a missing acknowledgement marks the connection unhealthy.intervalMsandtimeoutMsmust be positive and at most 2147483647. - protocols — Subprotocols passed to the constructor.
- reconnect — Opt-in.
attemptsdefaults to 3;0disables retry, and omittingattemptsis not unlimited. Other defaults:delayMs1000,factor2,jitter0 (a 0-1 multiplicative factor),maxDelayMs30000.shouldReconnectreceives the closecode,reason, andwasCleanand can veto a retry.
The retry budget applies per outage. Successful open resets the budget, callback attempt, and backoff exponent; the next outage starts at retry 1. maxDelayMs caps the final delay after jitter and rounding, also bounded by 2_147_483_647 ms. See withWebSocketReconnect for validation rules and overflow behavior.
Set these with withWebSocketHandle, withWebSocketBeforeConnect, withWebSocketHeartbeat, withWebSocketProtocols, and withWebSocketReconnect. WebSocketExecuteOptions can override beforeConnect, heartbeat, protocols, and reconnect per call.
Members
Prop
Type
handle? WebSocketHandleConstructor | undefinedWebSocket constructor; defaults to globalThis.WebSocket.
beforeConnect? ((context: { attempt: number; signal: AbortSignal; }) => void | Promise<void>) | undefinedHook before each connect/reconnect attempt.
heartbeat? { intervalMs: number; isAck?: (message: unknown) => boolean; message?: <T = unknown>() => T | unknown; timeoutMs?: number; } | undefinedPeriodic heartbeat ping and optional ACK matching.
protocols? readonly string[] | undefinedSubprotocols passed to the WebSocket constructor.
reconnect? { attempts?: number; delayMs?: number; factor?: number; jitter?: number; maxDelayMs?: number; shouldReconnect?: (context: { attempt: number; cause?: unknown; code?: number; reason?: string; wasClean?: boolean; }) => boolean; } | undefinedAutomatic reconnect policy after unexpected closes.