Sign inGet started

Kanały presence

Kanał, którego nazwa zaczyna się od presence-, używa autoryzacji kanału prywatnego i dodaje tożsamość członka. Twój backend przypisuje każdemu subskrybentowi member_id. Subskrybenci otrzymują bieżącą listę członków oraz zdarzenia dołączania i opuszczania kanału.
Używaj kanałów presence do list online, podglądu dokumentów, wskaźników pisania lub współdzielonych kursorów.

Subskrypcja

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));
W Swift i Kotlin subscribe zwraca bazowy typ kanału. Rzutuj go na PresenceChannel przed uzyskaniem dostępu do myId lub members. Swift udostępnia mapę członków dla bird:subscription_succeeded oraz Member dla zdarzeń dołączania i opuszczania. Kotlin udostępnia każde zdarzenie jako JsonElement. W obu klientach odczytuj bieżący roster z room.members.
bird:subscription_succeeded uruchamia się po zakończeniu subskrypcji. W tym momencie room.members zawiera bieżący roster, a room.myId zawiera Twój member_id. Wyrenderuj ten początkowy roster przed zastosowaniem późniejszych zdarzeń dołączania i opuszczania.
Autoryzacja przebiega tak samo jak w kanale prywatnym, z jednym dodatkiem: Twój endpoint zwraca member_data, ciąg JSON zawierający member_id i opcjonalny member_info, i musi podpisać dokładnie ten ciąg. Zobacz Autoryzacja kanałów.

Używaj member_info bezpiecznie

Każdy członek kanału otrzymuje member_info. Używaj go do małych, publicznych danych profilowych, takich jak nazwa wyświetlana lub URL awatara. Nie umieszczaj w nim adresów e-mail, ról autoryzacyjnych ani innych wrażliwych danych.
Twój backend przypisuje member_id i member_info w podpisanej odpowiedzi autoryzacyjnej. Klient może zażądać subskrypcji, ale nie może wybrać podpisanej tożsamości.

Członkowie i połączenia

Jeden członek może mieć kilka połączeń. Na przykład trzy otwarte karty tworzą jednego członka i trzy połączenia:
Co się dziejeZdarzenie członkaLiczba połączeń kanału
Pierwsza karta subskrybujebird:member_added1
Druga karta subskrybujebrak2
Druga karta się zamykabrak1
Ostatnia karta się zamykabird:member_removed0
room.members reprezentuje tożsamości, a nie sesje. Aby otrzymywać liczbę otwartych połączeń, włącz Connection counting i Connection count events, a następnie binduj bird:connection_count.

Odczyt obecności z serwera

Istnieją dwa odczyty po stronie serwera i żaden nie wymaga subskrypcji:
member_count działa tylko w kanałach presence. Żądanie go na kanale publicznym lub prywatnym jest błędem walidacji, ponieważ te kanały nie mają członków.
Możesz też zażądać go podczas publikowania, co zwraca stan każdego docelowego kanału w danym momencie. Zobacz Publikowanie zdarzeń.

Następne kroki

Powiązane zasoby

Kontynuuj z dokumentacją, przewodnikami i przykładami dotyczącymi tego tematu. Zasoby są w języku angielskim.

Wypróbuj ćwiczenie i uzyskaj brief wdrożeniowy