> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voxfi.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Canal Event

> Recebendo atualizações sobre eventos específicos

## 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:

```json theme={null}
{
  "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

```json theme={null}
{
  "type": "subscribe",
  "channel": "event",
  "events": ["event-id-1"]
}
```

#### Receber Apenas Orderbook

```json theme={null}
{
  "type": "subscribe",
  "channel": "event",
  "events": ["event-id-1", "event-id-2"],
  "filter": "orderbook"
}
```

#### Receber Apenas Trades

```json theme={null}
{
  "type": "subscribe",
  "channel": "event",
  "events": ["event-id-1"],
  "filter": "trades"
}
```

## Mensagens Recebidas

As mensagens recebidas são idênticas às do [canal market](/pt/websockets/market-channel), 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:**

```json theme={null}
{
  "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:**

```json theme={null}
{
  "msg_type": "new-trades",
  "event_id": "string",
  "market_id": "string",
  "last_trades": [
    {
    // 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:**

```json theme={null}
{
  "msg_type": "update",
  "event_id": "string",
  "market_id": "string",
  "orderbook": {
    // Mesma estrutura do orderbook do canal market
  },
  "last_trades": [
    {
    // 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

<CodeGroup>
  ```javascript JavaScript theme={null}
  const ws = new WebSocket('wss://data-ws-dev.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-trades') {
      console.log(`Nova trade no evento ${data.event_id}, mercado ${data.market_id}`);
      console.log('Trades:', data.last_trades);
    }
  };
  ```

  ```python Python theme={null}
  import asyncio
  import websockets
  import json

  async def subscribe_event():
      uri = "wss://data-ws-dev.voxfi.com.br"
      
      async with websockets.connect(uri) as websocket:
          # Inscrever-se em um evento
          subscribe_msg = {
              "type": "subscribe",
              "channel": "event",
              "events": ["event-id-1"],
              "filter": "orderbook"
          }
          await websocket.send(json.dumps(subscribe_msg))
          
          # Receber mensagens
          async for message in websocket:
              data = json.loads(message)
              
              if data.get("msg_type") == "update-orderbook":
                  print(f"Orderbook atualizado no evento {data['event_id']}, mercado {data['market_id']}")
                  print(f"Preço YES: {data['orderbook']['market_price_yes']}")
                  print(f"Preço NO: {data['orderbook']['market_price_no']}")
              elif data.get("msg_type") == "new-trades":
                  print(f"Nova trade no evento {data['event_id']}, mercado {data['market_id']}")
                  print(f"Trades: {data['last_trades']}")

  asyncio.run(subscribe_event())
  ```
</CodeGroup>

## Unsubscribe

Para cancelar a inscrição de eventos específicos:

```json theme={null}
{
  "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.
