Transmitir Logs Por WebSocket
Objetivo: consumir logs en tiempo real mediante suscripciones WebSocket.
Precondiciones
- El servicio JsonLog es alcanzable.
- El cliente WebSocket soporta parámetros de query y headers de auth.
- Para canales privados, usa un token Bearer válido de la cuenta propietaria.
Flujo De API/Script
- Abrir stream público:
- upgrade
GET /ws.
- upgrade
- Abrir stream de canal:
GET /ws?cid=<channel_id>.
- Aplicar filtro de nivel:
GET /ws?level=erroroGET /ws?cid=<channel_id>&level=warn.
- Para canales privados:
- incluir
Authorization: Bearer <token>en el upgrade.
- incluir
Flujo HTTP/curl
curl no puede completar el flujo WebSocket. Usa un cliente como wscat:
JSONLOG_BASE_URL="ws://localhost:3002"
ACCESS_TOKEN="<optional_account_token>"
# Stream público
wscat -c "${JSONLOG_BASE_URL}/ws"
# Stream público con filtro de nivel
wscat -c "${JSONLOG_BASE_URL}/ws?level=error"
# Stream de canal
wscat -c "${JSONLOG_BASE_URL}/ws?cid=svc-api"
# Stream de canal privado (autenticado)
wscat -c "${JSONLOG_BASE_URL}/ws?cid=private-api" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"
Validación
- El mensaje inicial contiene un arreglo de logs en buffer para ese alcance de stream.
- El upgrade privado sin token devuelve
401. - El upgrade privado con token de cuenta incorrecta devuelve
404.