Pular para o conteúdo principal

URL do WebSocket

Todas as conexões WebSocket devem ser feitas para:
wss://data-ws-dev.voxfi.com.br

Estabelecendo Conexão

Para conectar ao WebSocket, estabeleça uma conexão WebSocket padrão na URL acima. Não é necessário autenticação na conexão inicial, mas alguns canais requerem autenticação ao se inscrever.

Ping/Pong

O WebSocket implementa um sistema de heartbeat automático para manter a conexão ativa e detectar desconexões.

Heartbeat Automático

O servidor envia automaticamente mensagens de ping a cada 10 segundos. Você deve responder com pong dentro de 20 segundos para evitar desconexão por timeout.

Ping Manual

Você também pode enviar manualmente uma mensagem de texto simples para verificar latência: Enviar:
ping
Receber:
pong

Timeout

Se você não responder aos pings do servidor dentro de 20 segundos, a conexão será fechada automaticamente. Certifique-se de que sua implementação WebSocket responde automaticamente aos pings do servidor.

Canais Disponíveis

O WebSocket oferece três tipos de canais para receber diferentes tipos de atualizações:

Canal User

Receba atualizações sobre suas próprias ordens e transações. Requer autenticação com chave de API. Documentação completa do Canal User

Canal Market

Receba atualizações sobre mercados específicos (orderbook e trades). Não requer autenticação. Documentação completa do Canal Market

Canal Event

Receba atualizações sobre eventos específicos (inclui todos os mercados do evento). Não requer autenticação. Documentação completa do Canal Event

Tipos de Atualizações

Você pode filtrar o tipo de atualização que deseja receber nos canais market e event:
  • all ou "" (padrão): Todas as atualizações (orderbook e trades);
  • orderbook: Apenas atualizações de orderbook;
  • trades: Apenas atualizações de trades.

Exemplo de Conexão

const ws = new WebSocket('wss://data-ws-dev.voxfi.com.br');

ws.onopen = () => {
  console.log('Conectado ao WebSocket');
  
  // Enviar ping para verificar latência
  ws.send('ping');
};

ws.onmessage = (event) => {
  if (event.data === 'pong') {
    console.log('Pong recebido');
  } else {
    const data = JSON.parse(event.data);
    console.log('Mensagem recebida:', data);
  }
};

ws.onerror = (error) => {
  console.error('Erro no WebSocket:', error);
};

ws.onclose = (event) => {
  console.log('Conexão fechada:', event.code, event.reason);
};

Boas Práticas

  • Reconexão Automática: Implemente lógica de reconexão automática em caso de desconexão. Use backoff exponencial para evitar reconexões muito frequentes;
  • Heartbeat Automático: O servidor envia pings automaticamente a cada 10 segundos. Certifique-se de que sua implementação responde aos pings do servidor automaticamente;
  • Ping Manual: Você pode enviar ping manualmente para verificar latência, mas não é necessário devido ao heartbeat automático;
  • Tratamento de Erros: Sempre trate erros e desconexões adequadamente. Verifique os códigos de erro para entender a causa da desconexão;
  • Filtros Específicos: Use filtros (orderbook ou trades) quando precisar apenas de um tipo de atualização para reduzir o tráfego de rede;
  • Múltiplas Inscrições: Você pode se inscrever em múltiplos mercados e eventos na mesma conexão WebSocket;
  • Gerenciamento de Estado: Mantenha o estado local do orderbook e atualize conforme as mensagens chegam;
  • Buffer de Mensagens: Em caso de reconexão, considere fazer uma requisição HTTP para obter o estado atual antes de continuar recebendo atualizações via WebSocket.

Casos de Uso

  • Monitoramento de Preços em Tempo Real: Use o canal market com filtro orderbook para receber atualizações de preço instantâneas e construir uma visualização em tempo real;
  • Tracking de Trades: Use o canal market ou event com filtro trades para monitorar atividade de negociação e identificar padrões;
  • Gerenciamento de Ordens: Use o canal user para receber atualizações sobre suas próprias ordens e transações, permitindo reação rápida a mudanças;
  • Dashboard de Mercado: Combine múltiplos canais para criar um dashboard completo de mercado em tempo real com preços, trades e suas próprias posições;
  • Alertas de Preço: Monitore mudanças de preço e execute ações automaticamente quando certos níveis são atingidos;
  • Análise de Liquidez: Use atualizações de orderbook para analisar a profundidade do mercado e tomar decisões de negociação informadas;
  • Arbitragem: Monitore preços em múltiplos mercados simultaneamente para identificar oportunidades de arbitragem.