Skip to main content

Órdenes activas en tiempo real

Canal: Socket.IO
Funcionalidad: Recibir y actualizar en tiempo real las órdenes activas de cada usuario.


🚀 Conexión y autenticación

  • Conéctate al servidor Socket.IO usando la URL proporcionada por el backend (por ejemplo: https://api.tuapp.com).
  • Para acceder a las órdenes activas, emite el evento join-trade-room con el userId del usuario autenticado.
  • No es necesario un token adicional para la conexión Socket; el backend valida el userId internamente.

🔄 Flujo de comunicación

1. Unirse a la sala de usuario

Evento emitido por el frontend:

{
"event": "join-trade-room",
"payload": {
"userId": 12345
}
}

Respuesta del backend:

{
"event": "joined-trade-room",
"payload": {
"room": "user-trade-room-12345"
}
}

2. Recepción de órdenes activas

Si hay órdenes activas:

{
"event": "order_update",
"payload": [
{
"orderId": "abc123",
"symbol": "BTCUSDT",
"side": "Buy",
"price": "27000.00",
"quantity": "0.5",
"status": "New"
// ...otros campos
}
// más órdenes...
]
}

Si no hay órdenes activas:

{
"event": "no_active_orders",
"payload": {
"message": "Sin órdenes activas"
}
}

3. Actualizaciones en tiempo real

  • El backend emitirá order_update con la lista actualizada de órdenes activas o no_active_orders si ya no quedan órdenes.
  • El frontend debe actualizar la interfaz según el evento recibido.

📝 Consideraciones para el frontend

  • Mantén la conexión abierta para recibir actualizaciones en tiempo real.
  • Si se pierde la conexión, reconecta y vuelve a emitir join-trade-room con el userId.
  • El formato de las órdenes sigue el estándar de Bybit para órdenes activas.
  • La sala es exclusiva para cada usuario; no se comparten datos entre usuarios.

📚 Resumen de eventos

EventoDescripciónPayload
join-trade-roomSolicita unirse a la sala de órdenes activas{ userId: number }
joined-trade-roomConfirmación de unión a la sala{ room: string }
order_updateLista actualizada de órdenes activasArray<Orden>
no_active_ordersNo hay órdenes activas{ message: string }