Sign inGet started

Canais de cache

Um canal de cache guarda o evento mais recente e o reenvia para cada novo assinante. Um cliente que se conecta após uma atualização pode renderizar o estado atual sem esperar por outra publicação.
Use canais de cache para valores atuais como placar de uma partida, estado de dispositivo, progresso de build ou status de pedido. A assinatura fornece o estado inicial e as atualizações posteriores.

Nomeie um canal de cache

O nome do canal habilita o cache. Coloque cache- no início do nome ou logo após o prefixo de tipo do canal.
NomeCacheAssinatura
cache-orderssimqualquer um com a chave do app
private-cache-orderssimseu backend assina pelo cliente
presence-cache-lobbysimseu backend assina, membros rastreados
orders-cachenãoqualquer um com a chave do app
orders-cache não é um canal de cache. O prefixo cache- deve vir antes do nome, após qualquer prefixo private- ou presence-.
Todo o restante do canal permanece inalterado. Um canal private-cache- autoriza exatamente como um canal privado, e um canal presence-cache- continua rastreando membros e disparando eventos de membros como qualquer outro canal de presença.

Assinatura

const bird = new BirdRealtime({ appKey: "your-app-key", region: "us1" });

const match = bird.subscribe("cache-match-42");

match.bind("score-updated", (data) => {
  render(data);
});

match.bind("bird:cache_miss", () => {
  console.log("nothing cached for this channel yet");
});
Em caso de acerto, o evento em cache chega após a assinatura ser bem-sucedida. Ele traz o nome e o payload do evento original, então o mesmo handler processa eventos em cache e ao vivo.
Em caso de falha, o cliente recebe bird:cache_miss naquele canal. Ou o canal nunca recebeu uma publicação ou o evento em cache expirou.

Preenchendo o cache em caso de falha

Se um endpoint assina realtime.cache_channels, a falha também chega ao seu servidor. Trate o webhook lendo o estado atual e publicando-o no canal.
await bird.realtime.publish(appId, {
  event: "score-updated",
  channels: ["cache-match-42"],
  data: await currentScore(42),
});
O cliente que causou a falha já está inscrito antes de o servidor publicar o evento substituto, então ele recebe o novo estado. Esse fluxo também preenche um cache vazio para o primeiro assinante.

Conteúdo e retenção do cache

Eventos publicados pela API são armazenados em cache, incluindo publicações únicas e em lote. Eventos de cliente cujos nomes começam com client- não são armazenados em cache.
Eventos em cache podem permanecer disponíveis por até 30 minutos, mas podem expirar antes. Repopule canais atualizados com pouca frequência a partir do webhook de cache-miss em vez de assumir que o cache ainda está ativo.
Cada canal guarda apenas o evento mais recente. Se você publicar score-updated e depois match-ended, um novo assinante receberá apenas match-ended. Use um nome de evento por canal de cache ou inclua o estado completo em cada payload.

Limitações do cache

Um canal de cache armazena apenas o evento mais recente. Ele não preserva um histórico de eventos. Um cliente que perde duas atualizações enquanto está offline recebe o estado mais recente sem o evento intermediário. Mantenha o estado durável no seu banco de dados. Após reconectar, o cliente se reinscreve e renderiza o evento em cache, caso ainda esteja disponível. Consulte Publicação de eventos para garantias de entrega.

Próximos passos