Sign inGet started

Consultando o estado de canais

Três leituras do lado do servidor listam canais ocupados, inspecionam um canal e listam os membros de um canal de presença. Autentique cada solicitação com a sua chave Bird API e a key e secret do app Realtime.
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({
  apiKey: process.env.BIRD_API_KEY,
  realtime: {
    key: process.env.BIRD_REALTIME_KEY,
    secret: process.env.BIRD_REALTIME_SECRET,
  },
});

Quais canais estão ocupados

const { data } = await bird.realtime.channels.list(appId, { prefix: "presence-" });

for (const channel of data) {
  console.log(channel.name);
}
Um canal aparece na lista enquanto pelo menos uma conexão estiver inscrita. Canais não são criados nem registrados separadamente, então canais vazios não aparecem. Use prefix para restringir o resultado a uma família como presence- ou orders-.
A resposta não é paginada e retorna todos os canais ocupados em um snapshot ao vivo. Consulte Listar canais Realtime.

Inspecionar um canal

const channel = await bird.realtime.channels.get(appId, "presence-lobby", {
  include: ["member_count"],
});

if (!channel.occupied) return; // nobody is listening; skip the work
Um nome desconhecido ou não utilizado retorna 200 OK com occupied: false. Use esse resultado para evitar trabalho quando nenhuma conexão pode recebê-lo. Consulte Obter um canal Realtime.

Contagens, via include

include é repetível e aceita exatamente dois valores:
  • member_count é o número de membros distintos e funciona apenas em canais de presença.
  • connection_count é o número de conexões inscritas no canal e requer a configuração de contagem de conexões do app.
Qualquer outro valor retorna 400 Bad Request. API também retorna 400 Bad Request para member_count em um canal que não é de presença, uma solicitação de listagem sem prefixo de presença, ou connection_count quando a contagem de conexões está desativada.
Solicitar atributos conta como uma mensagem extra no consumo. Omita-os quando occupied responder à sua pergunta.
Um membro pode manter várias conexões. Uma sala com três pessoas, cada uma com duas abas abertas, reporta um member_count de 3 e um connection_count de 6. Canais de presença explica a distinção.

Quem está presente

const { members } = await bird.realtime.channels.members(appId, "presence-lobby");

for (const member of members) {
  console.log(member.member_id);
}
A resposta contém apenas IDs de membros. member_info é entregue aos clientes inscritos e não está disponível por meio desta operação REST. Associe os IDs aos seus próprios registros para exibir nomes ou avatares. Consulte Listar membros do canal.

Lendo o estado enquanto você publica

Ao publicar, use include para retornar as mesmas contagens de cada canal de destino no momento da publicação. Consulte Lendo o estado do canal enquanto você publica.

Comportamento pontual

Cada resposta é um snapshot pontual e pode se tornar obsoleta imediatamente. Use-a para decisões pontuais em vez de polling para estado contínuo.
Para estado contínuo, inscreva um endpoint nos grupos de webhook do Realtime. realtime.channel_existence reporta canais ocupados e desocupados, realtime.presence reporta alterações de membros e realtime.connection_count reporta alterações na contagem de conexões. Use leituras de estado de canal para inicializar ou reconciliar a sua visão armazenada.

Próximos passos