API Reference / WebSocketManager
Class: WebSocketManager
Defined in: src/ws/WebSocketManager.ts:80
Enhanced WebSocket Manager with auto-reconnect, batching, and Greeks.
This wrapper around DhanWS provides:
- Automatic instrument batching (max 5000 per subscription)
- Exponential backoff reconnection
- State restoration (re-subscription after disconnect)
- Real-time Greeks calculation on ticks
- Underlying spot price tracking
Example
const wsManager = new WebSocketManager({
token: accessToken,
clientId: client_id,
maxInstrumentsPerBatch: 4000,
enableAutoReconnect: true,
enableGreeksCalculation: true,
defaultRiskFreeRate: 0.065,
});
// Subscribe to entire BankNifty weekly chain
const bankNiftyStrikes = [44000, 44050, 44100, ...]; // 50 strikes
const subscriptions = bankNiftyStrikes.flatMap(strike => [
{ exchangeSegment: "NSE_FNO", securityId: getCallId(strike) },
{ exchangeSegment: "NSE_FNO", securityId: getPutId(strike) },
]);
wsManager.subscribe(subscriptions, {
"44000": { strike: 44000, expiryDate: "2026-01-30", optionType: "call", ... },
// ... more contracts
});
// Listen to enriched ticks with Greeks
wsManager.onTick((tick) => {
if (tick.greeks) {
console.log(`Delta: ${tick.greeks.delta}, Theta: ${tick.greeks.theta}`);
}
});
await wsManager.connect();Constructors
Constructor
new WebSocketManager(
config):WebSocketManager
Defined in: src/ws/WebSocketManager.ts:93
Parameters
config
Returns
WebSocketManager
Methods
connect()
connect():
Promise<void>
Defined in: src/ws/WebSocketManager.ts:126
Connect to WebSocket servers.
Returns
Promise<void>
disconnect()
disconnect():
void
Defined in: src/ws/WebSocketManager.ts:133
Disconnect from WebSocket servers.
Returns
void
subscribe()
subscribe(
instruments,optionMetadataMap?):void
Defined in: src/ws/WebSocketManager.ts:146
Subscribe to instruments with automatic batching.
If the number of instruments exceeds the batch size, they are split into multiple subscription requests automatically.
Parameters
instruments
Array of instrument subscriptions
optionMetadataMap?
Record<string, OptionContractMetadata>
Optional metadata for options (for Greeks calculation)
Returns
void
unsubscribe()
unsubscribe(
instruments):void
Defined in: src/ws/WebSocketManager.ts:177
Unsubscribe from instruments.
Parameters
instruments
Returns
void
updateUnderlyingSpot()
updateUnderlyingSpot(
underlyingSecurityId,spotPrice):void
Defined in: src/ws/WebSocketManager.ts:195
Update underlying spot price (used for Greeks calculation).
Parameters
underlyingSecurityId
string
Security ID of the underlying index (e.g., "1333" for Nifty)
spotPrice
number
Current spot price
Returns
void
onTick()
onTick(
callback):void
Defined in: src/ws/WebSocketManager.ts:202
Set callback for enriched ticks (with Greeks).
Parameters
callback
(tick) => void
Returns
void
getSubscribedInstruments()
getSubscribedInstruments():
InstrumentSubscription[]
Defined in: src/ws/WebSocketManager.ts:209
Get all currently subscribed instruments.
Returns
isConnected()
isConnected():
boolean
Defined in: src/ws/WebSocketManager.ts:216
Check if connected.
Returns
boolean
getLTPStore()
getLTPStore():
LTPStore
Defined in: src/ws/WebSocketManager.ts:223
Get LTP store reference.