📖 Descrição
Endpoint de Server-Sent Events (SSE) que transmite oportunidades de arbitragem detectadas pelo motor WebSocket em tempo real. Cada evento representa uma oportunidade identificada após o debounce de 200ms por símbolo.SSE é uma conexão HTTP persistente unidirecional. O browser se reconecta automaticamente em caso de queda. Use a API nativa
EventSource para consumir este endpoint — não é necessário WebSocket do lado do cliente.🛠️ Requisição
Método
GET
URL
Headers Necessários
| Header | Valor | Descrição |
|---|---|---|
Accept | text/event-stream | Indica que o cliente aceita SSE |
Cache-Control | no-cache | Desabilita cache intermediário |
Parâmetros
Nenhum.Exemplo de Requisição (curl)
Exemplo de Requisição (JavaScript)
📤 Resposta
Headers da Resposta
| Header | Valor |
|---|---|
Content-Type | text/event-stream |
Cache-Control | no-cache |
Connection | keep-alive |
X-Accel-Buffering | no |
O header
X-Accel-Buffering: no é necessário para que Nginx (ou proxies similares) não bufferizem a resposta, garantindo entrega imediata dos eventos.Formato dos Eventos SSE
Cada evento segue o protocolo SSE padrão:Estrutura do Payload JSON
Campos do Payload
| Campo | Tipo | Descrição |
|---|---|---|
ticker | string | Par de trading (ex: BTC-USDT) |
buyExchange | string | Exchange onde comprar (preço mais baixo) |
sellExchange | string | Exchange onde vender (preço mais alto) |
buyPrice | float | Preço de compra (ask) na exchange de compra |
sellPrice | float | Preço de venda (bid) na exchange de venda |
profitPercentAskBid | float | Spread de lucro em percentual |
volume | float | Volume de 24h (do cache, atualizado a cada 60s) |
timestamp | string (ISO 8601) | Momento da detecção |
🔄 Ciclo de Vida da Conexão
O
SSEBroadcaster suporta múltiplos clientes simultâneos via fan-out. Cada cliente recebe um canal dedicado — a lentidão de um cliente não impacta os demais.⚠️ Considerações
Este endpoint requer
ENABLED_WEBSOCKET=1 no ambiente. Se o fluxo WebSocket não estiver ativo, a conexão SSE será estabelecida mas nenhum evento será emitido até que algum handler WebSocket detecte uma oportunidade.