Sign inGet started

Canales de presencia

Un canal cuyo nombre empieza con presence- usa la autorización de canal privado y añade identidad de miembro. Tu backend asigna a cada suscriptor un member_id. Los suscriptores reciben la lista actual de miembros y eventos cuando los miembros se unen o abandonan el canal.
Usa canales de presencia para listas de usuarios en línea, visualizadores de documentos, indicadores de escritura o cursores colaborativos.

Suscripción

const room = bird.subscribe("presence-room-1");

room.bind("bird:subscription_succeeded", () => {
  console.log("me:", room.myId);
  console.log("here now:", [...room.members.values()]);
});

room.bind("bird:member_added", (member) => console.log("joined", member.member_id));
room.bind("bird:member_removed", (member) => console.log("left", member.member_id));
En Swift y Kotlin, subscribe devuelve un tipo de canal base. Conviértelo a PresenceChannel antes de acceder a myId o members. Swift proporciona un mapa de miembros para bird:subscription_succeeded y un Member para eventos de entrada y salida. Kotlin proporciona cada evento como JsonElement. En ambos clientes, lee el listado actual desde room.members.
bird:subscription_succeeded se dispara cuando la suscripción se completa. En ese momento, room.members contiene el listado actual y room.myId contiene tu member_id. Renderiza este listado inicial antes de aplicar los eventos posteriores de entrada y salida.
La autorización sigue el mismo flujo que un canal privado con una adición: tu endpoint devuelve member_data, una cadena JSON que contiene member_id y member_info opcional, y debe firmar esa cadena exacta. Consulta Autorización de canales.

Usa member_info de forma segura

Cada miembro del canal recibe member_info. Úsalo para datos pequeños de perfil público, como un nombre visible o una URL de avatar. No incluyas direcciones de correo electrónico, roles de autorización ni otros datos sensibles.
Tu backend asigna member_id y member_info en su respuesta de autorización firmada. El cliente puede solicitar una suscripción, pero no puede elegir la identidad firmada.

Miembros y conexiones

Un miembro puede tener varias conexiones. Por ejemplo, tres pestañas abiertas producen un miembro y tres conexiones:
Qué ocurreEvento de miembroConexiones del canal
Primera pestaña se suscribebird:member_added1
Segunda pestaña se suscribeninguno2
Segunda pestaña se cierraninguno1
Última pestaña se cierrabird:member_removed0
room.members representa identidades, no sesiones. Para recibir el número de conexiones abiertas, activa Connection counting y Connection count events, y luego bindea bird:connection_count.

Lectura de presencia desde tu servidor

Existen dos lecturas del lado del servidor, y ninguna requiere una suscripción:
  • Listar miembros del canal devuelve los valores member_id actualmente suscritos a un canal de presencia.
  • Obtener un canal con include=member_count devuelve cuántos miembros están presentes, sin listarlos.
member_count es exclusivo de presencia. Solicitarlo en un canal público o privado produce un error de validación, porque esos canales no tienen miembros.
También puedes solicitarlo al publicar, lo que devuelve el estado de cada canal de destino en ese momento. Consulta Publicación de eventos.

Próximos pasos