Skip to main content

📖 Descrição

Endpoint de Server-Sent Events (SSE) que transmite os preços atuais (ask/bid) de cada criptomoeda configurada no Looker, uma vez por segundo. Os preços são lidos diretamente do RealtimePriceCache, que é alimentado em tempo real pelos handlers WebSocket das exchanges.
Os preços dependem do fluxo WebSocket estar habilitado (ENABLED_WEBSOCKET=1). Exchanges não cobertas por WebSocket retornarão eventos com stale: true.

🛠️ Requisição

Método

GET

URL

Parâmetros de Caminho

Headers Necessários

Exemplo de Requisição (curl)

Exemplo de Requisição (JavaScript)


📤 Resposta

Headers da Resposta

Frequência de Emissão

A cada 1 segundo, são emitidos N eventos — um por cripto configurada no Looker (máximo 6). Todos os eventos do mesmo ciclo são seguidos de um Flush() para entrega atômica.

Formato dos Eventos SSE

Estrutura do Payload JSON

Campos do Payload


📝 Códigos de Resposta

200 OK + Content-Type: text/event-stream: Stream aberto com sucesso. A conexão permanece aberta até o cliente fechar.
400 Bad Request: id parameter is required — Parâmetro id não informado na URL.
404 Not Found: looker not found — Looker com o ID fornecido não existe no banco.
500 Internal Server Error: SSE not supported by this server ou Failed to load looker.

💡 Integração no Frontend (hook React)

O projeto já fornece o hook useLookerStream em src/hooks/useLookerStream.js:

Retorno do Hook


⚠️ Considerações

Quando stale: true, exiba um indicador visual (ícone de aviso, cor diferente) ao usuário para indicar que o dado pode estar desatualizado. O campo é true quando o último tick recebido pelo WebSocket foi há mais de 10 segundos.
Exchanges como Mercado Bitcoin e Novadax não possuem WebSocket público. Para cryptos monitoradas nessas exchanges, todos os eventos terão stale: true. Uma melhoria futura pode adicionar fallback REST com polling de 5s para essas exchanges.
A conexão SSE é mantida até o cliente desconectar (navegação, fechamento de aba). O servidor detecta a desconexão via r.Context().Done() e encerra a goroutine imediatamente, sem leak de recursos.