Streaming en tiempo real
Conectá al WebSocket y recibí trades de GGAL y YPF en vivo. Incluye autenticación con token OAuth.
Concepto clave: REST + WebSocket
Para conectar al WebSocket de forma segura, primero obtenés un token de la REST API y luego lo usás para autenticarte en el WebSocket:
Antes de empezar
- Token de acceso (ver guía anterior)
- Python:
pip install websockets - Node.js:
npm install ws(o usar browser nativo)
Obtener token (si no lo tenés)
Si ya completaste la guía anterior, ya tenés un token. Si no, primero autenticá con la REST API para obtener el access_token.
POST https://api.iolinversiones.com/auth/tokenConectar al WebSocket
Conectá al endpoint de market data, autenticá con el token, y suscribite a los activos:
Endpoint: wss://stream-marketdata.iolinversiones.com
import asyncio
import websockets
import json
WS_URL = "wss://stream-marketdata.iolinversiones.com"
TOKEN = "tu_access_token" # Obtener de REST API /auth/token
async def stream_prices():
async with websockets.connect(WS_URL) as ws:
# Autenticar con token
await ws.send(json.dumps({
"action": "auth_token",
"token": TOKEN
}))
# Suscribirse a trades
await ws.send(json.dumps({
"action": "subscribe",
"trades": ["GGAL|BCBA|T0", "YPF|BCBA|T0"]
}))
# Recibir datos
async for message in ws:
data = json.loads(message)
if data.get("type") == "T": # Trade
print(f"📈 {data['S']}: ${data['P']} ({data['Z']} acciones)")
asyncio.run(stream_prices())Tipos de datos disponibles
Podés suscribirte a diferentes tipos de datos:
Cada operación ejecutada en el mercado
Mejor compra/venta (BBO) actualizado
Profundidad del mercado (varios niveles)
Ejemplo de suscripción múltiple:
{
"action": "subscribe",
"trades": ["GGAL|BCBA|T0", "YPF|BCBA|T0"],
"quotes": ["AL30|BCBA|T0", "GD30|BCBA|T0"],
"order_book": ["GGAL|BCBA|T0"]
}Mantener la conexión (Heartbeat)
El servidor envía pings periódicos. Debés responder con pong para mantener la conexión:
Servidor envía:
{ "action": "ping" }Tu respuesta:
{ "action": "pong" }Si no respondés en 30 segundos, el servidor cierra la conexión automáticamente.
Solución de problemas
Error 401 al conectar
Token expirado o inválido. Obtené un token nuevo de la REST API.
Conexión se cierra sola
No estás respondiendo a los pings. Implementá el handler de heartbeat.
No recibo datos
El mercado puede estar cerrado. Los trades solo llegan cuando hay operaciones.