Skip to content

WebSocket Subscriptions

Real-time data streams for orderbook, trades, and market prices.

Access via sdk.ws.

Architecture

The 100x backend exposes separate WebSocket endpoints for each data type:

EndpointPathDescription
Orderbook/ws/v1/orderbook/:marketIdReal-time orderbook updates
Trades/ws/v1/trades/:marketIdReal-time trade stream
Market Prices/ws/v1/order/quotesBest bid/ask and last price

Each subscription creates its own WebSocket connection.

subscribeOrderbook()

Subscribe to real-time orderbook updates for a market.

typescript
const subId = await sdk.ws.subscribeOrderbook(1, (data) => {
  console.log('Bids:', data.bids);
  console.log('Asks:', data.asks);
});

Parameters:

ParameterTypeDescription
marketIdnumberMarket ID
callback(data: WsOrderbookData) => voidCallback for updates

Returns: string — subscription ID for unsubscribing.

subscribeTrades()

Subscribe to real-time trade stream for a market.

typescript
const subId = await sdk.ws.subscribeTrades(1, (trades) => {
  for (const trade of trades) {
    console.log(`${trade.side} ${trade.size} @ ${trade.price}`);
  }
});

Parameters:

ParameterTypeDescription
marketIdnumberMarket ID
callback(data: WsTrade[]) => voidCallback for trades

subscribeMarketPrices()

Subscribe to best bid/ask and last price across all markets.

typescript
const subId = await sdk.ws.subscribeMarketPrices((prices) => {
  for (const p of prices) {
    console.log(`Market ${p.marketId}: ${p.bestBid} / ${p.bestAsk}`);
  }
});

unsubscribe()

Unsubscribe from a specific subscription.

typescript
sdk.ws.unsubscribe(subId);

unsubscribeAll()

Close all active WebSocket connections.

typescript
sdk.ws.unsubscribeAll();

Connection Management

WebSocket connections include:

  • Auto-reconnect with exponential backoff (up to 5 attempts)
  • Ping/pong keepalive every 30 seconds
  • Manual disconnect via sdk.disconnect() (prevents auto-reconnect)
typescript
// Clean shutdown
sdk.disconnect();

100x Exchange Market Maker SDK