Pasos de conexión
1. Abrir WebSocket
Conéctate al endpoint del Exit Intelligence Stream con tu clave API en el encabezadox-api-key:
2. Recibir hello_ok
Inmediatamente después de que la conexión se abre, el servidor envía un mensaje hello_ok:
limits refleja la capacidad de tu nivel. Ver Límites de tasa y niveles para detalles.
3. Enviar configure
Después de recibir hello_ok, envía un mensaje configure con tus wallets y estrategia:
4. Recibir confirmación
El servidor responde con mensajes iniciales debalance_update para tokens que ya se mantienen en las wallets configuradas. Si se detecta una posición, también recibirás position_opened.
El objeto limits
| Campo | Tipo | Descripción |
|---|---|---|
hi_capacity | number | Máximo de mensajes de alta prioridad almacenados en buffer. |
pnl_flush_ms | number | Intervalo en que se envían las actualizaciones de PnL (ms). |
max_positions_per_session | number | Máximo de posiciones rastreadas por sesión. |
max_wallets_per_session | number | Máximo de wallets por sesión. |
max_positions_per_wallet | number | Máximo de posiciones rastreadas por wallet. |
max_sessions_per_api_key | number | Máximo de sesiones concurrentes por clave API. |
Reconexión
Los SDKs manejan la reconexión automáticamente. Cuando el WebSocket se desconecta:- El cliente espera con backoff exponencial comenzando en 100 ms.
- El backoff se duplica en cada intento hasta un máximo de 2,000 ms.
- Al reconectar exitosamente, el cliente reenvía el mensaje
configure. - El servidor reemitirá eventos
balance_updateyposition_openedpara holdings existentes.
Ping y Pong
Ping del cliente
Envía unping para medir la latencia de ida y vuelta:
pong:
Ping del servidor
El servidor también puede enviar pings a nivel de protocolo WebSocket. Los SDKs responden con frames pong automáticamente.StreamClient vs StreamSession
StreamClient
El cliente de bajo nivel gestiona la conexión WebSocket cruda:
- Maneja conexión, reconexión y enmarcado de mensajes.
- Devuelve objetos
ServerMessagecrudos desderecv(). - Proporciona un
StreamSenderpara enviar mensajes del cliente. - Soporta lane splitting a través de
connectLanes()que separa mensajes de alta prioridad (señales de salida, eventos de posición) de mensajes de baja prioridad (pnl_update).
StreamSession
La sesión de alto nivel envuelve StreamClient con:
- Seguimiento de posiciones: Mantiene automáticamente un mapa de posiciones abiertas por ID y cuenta de tokens.
- Eventos tipados: Devuelve objetos
StreamEventcon unPositionHandleadjunto. - Temporizadores de deadline: Solicita automáticamente señales de salida después de
deadline_timeout_sec. - Actualizaciones de estrategia: Métodos
updateStrategy()yupdateStrategyOptional().
StreamSession.
Lanes
El lane splitting separa el flujo de mensajes en dos receptores:- Lane de alta prioridad:
hello_ok,error,balance_update,position_opened,position_closed,exit_signal_with_tx - Lane de baja prioridad:
pnl_update
connectLanes():

