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:
| Endpoint | Path | Description |
|---|---|---|
| Orderbook | /ws/v1/orderbook/:marketId | Real-time orderbook updates |
| Trades | /ws/v1/trades/:marketId | Real-time trade stream |
| Market Prices | /ws/v1/order/quotes | Best 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:
| Parameter | Type | Description |
|---|---|---|
marketId | number | Market ID |
callback | (data: WsOrderbookData) => void | Callback 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:
| Parameter | Type | Description |
|---|---|---|
marketId | number | Market ID |
callback | (data: WsTrade[]) => void | Callback 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();