Sign inGet started

Canais de presença

Um canal cujo nome começa com presence- usa a autorização de canal privado e adiciona identidade de membro. Seu backend atribui a cada assinante um member_id. Os assinantes recebem a lista atual de membros e eventos quando membros entram ou saem.
Use canais de presença para listas de usuários online, visualizadores de documento, indicadores de digitação ou cursores colaborativos.

Inscrição

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));
Em Swift e Kotlin, subscribe retorna um tipo de canal base. Faça o cast para PresenceChannel antes de acessar myId ou members. Swift fornece um mapa de membros para bird:subscription_succeeded e um Member para eventos de entrada e saída. Kotlin fornece cada evento como JsonElement. Em ambos os clientes, leia a lista atual de membros em room.members.
bird:subscription_succeeded dispara quando a inscrição é concluída. Nesse momento, room.members contém a lista atual de membros e room.myId contém seu member_id. Renderize essa lista inicial antes de aplicar eventos posteriores de entrada e saída.
A autorização segue o mesmo fluxo de um canal privado com uma adição: seu endpoint retorna member_data, uma string JSON contendo member_id e member_info opcional, e deve assinar exatamente essa string. Veja Autorizando canais.

Use member_info com segurança

Todo membro do canal recebe member_info. Use-o para dados pequenos de perfil público, como nome de exibição ou URL de avatar. Não inclua endereços de e-mail, papéis de autorização ou outros dados sensíveis.
Seu backend atribui member_id e member_info na resposta de autorização assinada. O cliente pode solicitar uma inscrição, mas não pode escolher a identidade assinada.

Membros e conexões

Um membro pode manter várias conexões. Por exemplo, três abas abertas produzem um membro e três conexões:
O que aconteceEvento de membroContagem de conexões do canal
Primeira aba se inscrevebird:member_added1
Segunda aba se inscrevenenhum2
Segunda aba fechanenhum1
Última aba fechabird:member_removed0
room.members representa identidades em vez de sessões. Para receber o número de conexões abertas, ative Contagem de conexões e Eventos de contagem de conexões e então vincule bird:connection_count.

Lendo presença a partir do seu servidor

Existem duas leituras do lado do servidor, e nenhuma exige uma inscrição:
  • Listar membros do canal retorna os valores member_id atualmente inscritos em um canal de presença.
  • Obter um canal com include=member_count retorna quantos membros estão presentes, sem listá-los.
member_count é exclusivo de canais de presença. Solicitá-lo em um canal público ou privado é um erro de validação, porque esses canais não possuem membros.
Você também pode solicitá-lo ao publicar, o que retorna o estado de cada canal de destino naquele momento. Veja Publicando eventos.

Próximos passos