Skip to main content
Low-level WebSocket client for browser and Node.js environments. Used internally by @cosmjs/tendermint-rpc for WebSocket connections and streaming subscriptions.
npm install @cosmjs/socket

SocketWrapper

Thin abstraction over the native WebSocket API that works in both browsers and Node.js.
MethodParametersReturns
constructorurl: string, messageHandler: (event: SocketWrapperMessageEvent) => void, errorHandler: (event: SocketWrapperErrorEvent) => void, openHandler?: () => void, closeHandler?: (event: SocketWrapperCloseEvent) => void, timeout?: numberSocketWrapper
connectvoid
disconnectvoid
senddata: stringPromise<void>
PropertyType
connectedPromise<void> (resolves once the socket is open)

StreamingSocket

WebSocket client that exposes received messages as an xstream Stream.
MethodParametersReturns
constructorurl: string, timeout?: numberStreamingSocket
connectvoid
disconnectvoid
senddata: stringPromise<void>
PropertyType
eventsStream<SocketWrapperMessageEvent>
connectedPromise<void>

ReconnectingSocket

WebSocket client with automatic reconnection logic.
MethodParametersReturns
constructorurl: string, timeout?: number, reconnectedHandler?: () => voidReconnectingSocket
connectvoid
disconnectvoid
queueRequestrequest: stringvoid
PropertyType
eventsStream<SocketWrapperMessageEvent>
connectionStatusValueAndUpdates<ConnectionStatus>

QueueingStreamingSocket

WebSocket that queues outgoing messages until the connection is established.
MethodParametersReturns
constructorurl: string, timeout?: number, reconnectedHandler?: () => voidQueueingStreamingSocket
connectvoid
disconnectvoid
queueRequestrequest: stringvoid
getQueueLengthnumber
PropertyType
eventsStream<SocketWrapperMessageEvent>
connectionStatusValueAndUpdates<ConnectionStatus>

Event Types

interface SocketWrapperMessageEvent {
  readonly data: string;
  readonly type: string;
}

interface SocketWrapperErrorEvent {
  readonly isTrusted?: boolean;
  readonly type?: string;
  readonly message?: string;
}

interface SocketWrapperCloseEvent {
  readonly wasClean: boolean;
  readonly code: number;
}

ConnectionStatus

enum ConnectionStatus {
  Unconnected,  // 0
  Connecting,   // 1
  Connected,    // 2
  Disconnected, // 3
}