Passa al contenuto principale

redis-ws-bridge

Cosa fa

redis-ws-bridge espone un endpoint WebSocket pubblico e inoltra ai client i messaggi provenienti dai canali/pattern Redis.

Ruoli e responsabilita

  • sottoscrive pattern Redis via psubscribe;
  • applica filtri/aggregazioni per client (topics, symbols, types, aggregate, rateMs);
  • invia stream realtime ai client connessi su /ws;
  • fornisce endpoint status/monitoring del bridge e del bus.

Porta esposta

  • Porta interna servizio: 3030
  • Esposizione via Traefik: https://api.trading.expovin.it/redis-ws-bridge/*

Architettura grafica

Microservizi backend

Pubblicano eventi su Redis channel/pattern

Frontend / realtime clients

Consumano stream via WebSocket /ws

Redis psubscribe + WS dispatch
redis-ws-bridge

Bridge Redis -> WebSocket con filtri e aggregazione

  • filtri: topics/symbols/types
  • aggregate: throttle, lastPerSymbol, tickToBar1s
  • metriche client e stato bus
Redis Bus

Sorgente eventi (pattern configurati)

datahub

settings + log persistenti

Configurazione (docker-compose.paper.yml)

redis-ws-bridge:
image: expovin/redis-ws-bridge:${REDISWSBRIDGE_VERSION}
restart: unless-stopped
profiles: ["redis-ws-bridge"]
environment:
- REDIS_URL=${REDIS_URL}
- REDIS_PATTERNS=${REDIS_PATTERNS}
- DBMANAGER_URL=${DBMANAGER_URL}
- ENV=${ENV}
- TZ=${TIMEZONE}
depends_on:
redis:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3030/status/health"]
labels:
- "traefik.enable=true"
- "traefik.http.routers.redis-ws-bridge.rule=Host(`api.trading.expovin.it`) && PathPrefix(`/redis-ws-bridge`)"
- "traefik.http.services.redis-ws-bridge.loadbalancer.server.port=3030"
- "traefik.http.routers.redis-ws-bridge-ws.rule=Host(`api.trading.expovin.it`) && PathPrefix(`/redis-ws-bridge/ws`)"

Variabili d'ambiente

Infrastruttura

Variabili obbligatorie gestite da BaseService (comune a tutti i microservizi).

VariabileDefaultDescrizione
DATAHUB_URLhttp://datahub:3000URL del servizio datahub (ex DBMANAGER_URL, ancora accettato come alias). Usato per il fetch dei settings.
REDIS_URLredis://localhost:6379/0URI Redis (es. redis://redis:6379). Obbligatorio per il bus eventi e la sottoscrizione ai pattern.
ENVDEVAmbiente di esecuzione (local, paper, prod). Usato nel prefisso dei canali Redis.
LOG_LEVELinfoLivello di log: trace, debug, info, warning, error.
TZTimezone di sistema del container (es. America/New_York).

WebSocket e CORS

VariabileDefaultDescrizione
PORT3030Porta su cui il server HTTP/WebSocket è in ascolto.
CORS_ORIGINhttp://localhost:5173Origin o lista di origin separati da virgola autorizzati dal CORS. In produzione viene gestito da Traefik.

Redis pattern subscription

VariabileDefaultDescrizione
REDIS_PATTERNS*Lista di pattern Redis separati da virgola su cui il bridge effettua psubscribe. Ogni messaggio che corrisponde viene inoltrato ai client WebSocket connessi.

Internals

VariabileDefaultDescrizione
MAX_RETRY_DELAY60000Intervallo massimo in millisecondi applicabile ai canali di comunicazione via PUT /status/communicationChannels. Valori superiori vengono silenziosi clampati a questo limite.

Pagine dedicate