Um canal é um nome. Nada para provisionar.

Um canal existe assim que algo se inscreve nele e desaparece quando a última conexão sai. O nome define o tipo: public para qualquer coisa que um visitante possa ler, private para qualquer coisa restrita a um cliente, presence para uma sala com lista de membros e um prefixo cache para estado que um participante tardio precisa imediatamente.

channels.ts
4 subscribed
const bird = new BirdRealtime({ appKey: APP_KEY, region: "us1" });

// Public: anyone holding the app key can subscribe.
const scores = bird.subscribe("match-42");

// Private: your backend signs every subscription.
const order = bird.subscribe("private-order-ord_123");

// Presence: private, plus an identity the room can see.
const room = bird.subscribe("presence-room-42");

// Cache: the latest event replays to whoever joins next.
const build = bird.subscribe("cache-build-8821");

build.bind("bird:cache_miss", () => showSkeleton());

O prefixo é a configuração.

Não existe registro de canais para manter sincronizado.

Canais são o modelo de endereçamento da Bird Realtime API. Você nunca cria um: você se inscreve em um nome, e os três primeiros caracteres desse nome dizem ao edge como tratá-lo. Um nome sem prefixo é público. private- pede que seu backend aprove cada inscrição. presence- faz o mesmo e anexa uma identidade. private-encrypted- sela o payload com uma chave que Bird nunca possui. Os nomes aceitam até 164 caracteres, diferenciam maiúsculas de minúsculas, e são a única parte de um canal que você deve pensar com cuidado, porque um nome público é visível para qualquer pessoa que tenha a app key.

Cinco tipos de sala.

Mesmo protocolo, mesmo cliente, mesma chamada de publish. O nome é o que muda.

  1. 01

    Canais públicos.

    Sem endpoint de autorização, sem registro. Qualquer pessoa com a app key pode se inscrever, o que os torna certos para resultados de build, placares ao vivo, informações de voo ou uma página de status, e errados para qualquer coisa restrita a um cliente. Mantenha identificadores fora do nome: orders não revela nada, orders-user-4821 revela que o user 4821 existe.

  2. 02

    Canais privados.

    Um nome private- roteia a inscrição pelo seu próprio endpoint, que verifica a sessão e assina o connection id e o nome do canal com o app secret. Suas regras, sua sessão, seu 403. O edge verifica a assinatura e nada mais chega ao canal.

  3. 03

    Canais de presença.

    Autorização de canal privado mais uma identidade, para que cada inscrito receba a lista de membros e saiba sobre chegadas e saídas. Este é o único tipo de canal com uma lista de membros.

  4. 04

    Canais criptografados.

    Um canal private-encrypted- carrega payloads que seu servidor sela com uma chave mestra de 32 bytes que nunca aparece em uma solicitação Realtime. O edge e tudo entre ele e o navegador veem texto cifrado. Nomes de canais e eventos permanecem em texto aberto, então escolha nomes que não revelem o que você está protegendo.

  5. 05

    Canais de cache.

    Comece o nome com cache-, após qualquer prefixo de tipo, e o canal lembra seu evento mais recente publicado via API e o reproduz para cada novo inscrito. A inscrição funciona também como fetch do estado inicial. Duas restrições que vale a pena considerar no design: apenas o evento mais recente é mantido, e ele pode expirar antes do limite de 30 minutos, então coloque o estado completo em cada payload e repopule a partir do webhook de cache-miss em vez de assumir que o cache está quente.

Um publish, até cem canais.

Publicar é uma chamada REST comum do seu servidor. Nomeie até 100 canais em uma solicitação e o edge distribui o evento para todos eles. Um batch carrega até 10 eventos independentes, cada um para seu próprio canal. Passe o connection id do cliente que está agindo como exclude_connection_id e a aba que já aplicou a mudança localmente é ignorada. Solicite contagens de conexões ou membros com include e a resposta informa o estado de cada canal no momento da publicação. Tente novamente com a mesma idempotency key e você não entregará duas vezes.

publish.ts
200 · accepted
// One event, up to 100 channels, one request.
const result = await bird.realtime.publish(APP_ID, {
  event: "score-updated",
  channels: ["match-42", "cache-match-42"],
  data: { home: 2, away: 1 },
  // The tab that scored already rendered it locally.
  exclude_connection_id: "26896.319537",
  include: ["connection_count"],
});

for (const channel of result.data ?? []) {
  console.log(channel.name, channel.connection_count);
}

Clientes podem conversar entre si diretamente.

Um indicador de digitação ou uma posição de cursor não precisa passar pela sua API. Habilite client events no app e um cliente inscrito pode disparar um evento chamado client-something direto para os outros no canal, limitado a 10 por segundo por conexão. Eles funcionam apenas em canais privados e de presença, e isso é intencional: a app key é enviada na sua página, então a autorização é o que torna um cliente confiável o bastante para transmitir. Trate o que chega como um sinal, nunca como estado autoritativo, porque o edge não valida o payload.

O que um canal vai e não vai lembrar.

Um publish retorna assim que o edge aceita o evento. A entrega é assíncrona, não há confirmação por cliente, e um cliente que cai durante a entrega não receberá o evento novamente ao reconectar. Esse é o contrato honesto, e é por isso que estado durável pertence ao seu banco de dados e eventos anunciam que ele mudou. Os limites são os mesmos em todos os planos: 100 canais por publish, 10 eventos por batch, 10 KB por payload, nomes de canal com 164 caracteres.

Aprofunde-se na documentação.

A visão geral do Realtime define canais, membros e conexões em uma página. Publicar eventos cobre broadcast, batch e exclusão, canais de cache explica o replay, e consultar o estado do canal é a leitura server-side para ocupação e contagens.

Escale sem
perder o controle.

Organize equipes em espaços de trabalho, controle o acesso à API e rastreie alterações nos logs de auditoria.

BirdHarborOrganização
Espaços de trabalhoProduçãoSandbox

Agente de envio

Chave de API · Equipe de operações do cliente
Ativo
PermissõesAcesso
EmailLeitura e escrita
SMSLeitura e escrita
ALAlex Lee AdministradorPermissões atualizadas

Registo de auditoria

Produção
Espaço de trabalho
Produção
Recurso
Agente de envio
WhatsApp
Acesso de leituraLeitura e escrita
Concluído com sucesso

Comece com Realtime.
Construa em vários canais com a Bird.

Sua próxima ideia. Pronta para conectar.