Sign inGet started

Consultar el estado de los canales

Tres lecturas del lado del servidor listan los canales ocupados, inspeccionan un canal y listan los miembros de un canal de presencia. Autentica cada solicitud con tu clave Bird API y la clave y el secreto de la app de 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,
  },
});

Qué canales están ocupados

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

for (const channel of data) {
  console.log(channel.name);
}
Un canal aparece en la lista mientras al menos una conexión esté suscrita. Los canales no se crean ni se registran por separado, así que los canales vacíos no aparecen. Usa prefix para restringir el resultado a una familia como presence- o orders-.
La respuesta no está paginada y devuelve todos los canales ocupados en una sola instantánea en vivo. Consulta Listar canales de Realtime.

Inspeccionar un canal

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

if (!channel.occupied) return; // nobody is listening; skip the work
Un nombre desconocido o sin uso devuelve 200 OK con occupied: false. Usa este resultado para omitir trabajo cuando ninguna conexión puede recibirlo. Consulta Obtener un canal de Realtime.

Contadores, mediante include

include es repetible y acepta exactamente dos valores:
  • member_count es la cantidad de miembros distintos y solo funciona en canales de presencia.
  • connection_count es la cantidad de conexiones suscritas al canal y requiere que la app tenga habilitado el conteo de conexiones.
Cualquier otro valor devuelve 400 Bad Request. API también devuelve 400 Bad Request para member_count en un canal que no es de presencia, una solicitud de lista sin prefijo de presencia, o connection_count cuando el conteo de conexiones está deshabilitado.
Solicitar atributos cuenta como un mensaje extra en el consumo. Omítelos cuando occupied responde tu pregunta.
Un miembro puede tener varias conexiones. Una sala con tres personas que tienen dos pestañas abiertas cada una reporta un member_count de 3 y un connection_count de 6. Canales de presencia explica la distinción.

Quién está presente

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

for (const member of members) {
  console.log(member.member_id);
}
La respuesta contiene solo los IDs de los miembros. member_info se entrega a los clientes suscritos y no está disponible a través de esta operación REST. Cruza los IDs con tus propios registros para mostrar nombres o avatares. Consulta Listar miembros del canal.

Leer el estado mientras publicas

Al publicar, usa include para obtener los mismos contadores de cada canal destino en el momento de la publicación. Consulta Leer el estado del canal mientras publicas.

Comportamiento en un instante dado

Cada respuesta es una instantánea en un instante dado y puede quedar obsoleta de inmediato. Úsala para decisiones puntuales en lugar de hacer polling para estado continuo.
Para estado continuo, suscribe un endpoint a los grupos de webhooks de Realtime. realtime.channel_existence reporta canales ocupados y desocupados, realtime.presence reporta cambios de miembros y realtime.connection_count reporta cambios en el conteo de conexiones. Usa las lecturas de estado de canal para inicializar o reconciliar tu vista almacenada.

Próximos pasos