Pular para o conteúdo principal

Visão Geral

O canal event permite receber atualizações em tempo real sobre um ou mais eventos específicos. Como um evento pode conter múltiplos mercados, este canal é útil para monitorar todos os mercados de um evento de uma vez.

Autenticação

O canal event não requer autenticação. Você pode se inscrever sem fornecer uma chave de API.

Subscribe

Para se inscrever no canal event:
{
  "type": "subscribe",
  "channel": "event",
  "events": ["event-id-1", "event-id-2"],
  "filter": "trades"
}

Requisitos

  • events (obrigatório): Array de IDs de evento
  • filter (opcional): Tipo de atualização desejada
    • "" ou "all": Todas as atualizações (padrão)
    • "orderbook": Apenas atualizações de orderbook
    • "trades": Apenas atualizações de trades

Exemplos

Receber Todas as Atualizações

{
  "type": "subscribe",
  "channel": "event",
  "events": ["event-id-1"]
}

Receber Apenas Orderbook

{
  "type": "subscribe",
  "channel": "event",
  "events": ["event-id-1", "event-id-2"],
  "filter": "orderbook"
}

Receber Apenas Trades

{
  "type": "subscribe",
  "channel": "event",
  "events": ["event-id-1"],
  "filter": "trades"
}

Mensagens Recebidas

As mensagens recebidas são idênticas às do canal market, mas incluem atualizações de todos os mercados do evento.

Atualização de Orderbook

Recebida quando há mudanças no orderbook de qualquer mercado do evento (quando filter é "orderbook" ou "all"). Estrutura:
{
  "msg_type": "update-orderbook",
  "event_id": "string",
  "market_id": "string",
  "orderbook": {
    // Mesma estrutura do orderbook do canal market
  }
}

Nova Trade

Recebida quando uma nova trade é executada em qualquer mercado do evento (quando filter é "trades" ou "all"). Estrutura:
{
  "msg_type": "new-trade",
  "event_id": "string",
  "market_id": "string",
  "last_trade": {
    // Mesma estrutura da trade do canal market
  }
}

Atualização Completa

Recebida quando há atualizações gerais em qualquer mercado do evento (quando filter é "all" ou não especificado). Estrutura:
{
  "msg_type": "update",
  "event_id": "string",
  "market_id": "string",
  "orderbook": {
    // Mesma estrutura do orderbook do canal market
  },
  "last_trade": {
    // Mesma estrutura da trade do canal market
  }
}

Diferença entre Canal Market e Event

  • Canal Market: Recebe atualizações apenas dos mercados especificados;
  • Canal Event: Recebe atualizações de todos os mercados dentro dos eventos especificados.
Se um evento tem múltiplos mercados, o canal event permite monitorar todos eles com uma única inscrição.

Exemplo de Uso

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

ws.onopen = () => {
  // Inscrever-se em um evento com filtro orderbook
  ws.send(JSON.stringify({
    type: 'subscribe',
    channel: 'event',
    events: ['event-id-1'],
    filter: 'orderbook'
  }));
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  
  if (data.msg_type === 'update-orderbook') {
    console.log(`Orderbook atualizado no evento ${data.event_id}, mercado ${data.market_id}`);
    console.log('Preço YES:', data.orderbook.market_price_yes);
    console.log('Preço NO:', data.orderbook.market_price_no);
  } else if (data.msg_type === 'new-trade') {
    console.log(`Nova trade no evento ${data.event_id}, mercado ${data.market_id}`);
    console.log('Trade:', data.last_trade);
  }
};

Unsubscribe

Para cancelar a inscrição de eventos específicos:
{
  "type": "unsubscribe",
  "channel": "event",
  "events": ["event-id-1"]
}

Casos de Uso

  • Monitoramento de Evento Completo: Monitore todos os mercados de um evento com uma única inscrição;
  • Análise Comparativa: Compare preços e atividade entre diferentes mercados do mesmo evento;
  • Dashboard de Evento: Crie um dashboard completo mostrando todos os mercados de um evento;
  • Alertas de Evento: Configure alertas baseados em mudanças em qualquer mercado do evento;
  • Análise de Correlação: Analise correlações entre diferentes mercados do mesmo evento.

Boas Práticas

  • Use para Eventos Multi-Mercado: O canal event é especialmente útil para eventos com múltiplos mercados;
  • Filtros Específicos: Use filtros quando precisar apenas de um tipo de atualização para reduzir o tráfego;
  • Identificação: Sempre verifique tanto event_id quanto market_id nas mensagens para identificar corretamente a origem;
  • Performance: Para eventos com muitos mercados, considere usar filtros para reduzir o volume de mensagens.