Sign inGet Started

Kanały prywatne

Kanał, którego nazwa zaczyna się od private-, wymaga autoryzacji z Twojego backendu oprócz publicznego klucza aplikacji. Twój backend zatwierdza wywołującego dla danego kanału i zwraca sygnaturę obliczoną za pomocą sekretu aplikacji.
Używaj kanałów prywatnych do danych o ograniczonym zakresie, takich jak aktualizacje zamówień klienta, panel tenanta czy powiadomienia pojedynczej osoby.
const bird = new BirdRealtime({
  appKey: "your-app-key",
  region: "us1",
  authEndpoint: "/bird/auth",
});

const orders = bird.subscribe("private-orders-4821");
orders.bind("order-updated", (data) => {
  console.log(data);
});
Swift i Kotlin wymagają bezwzględnego URL-a autoryzacji, natomiast klient przeglądarkowy może używać ścieżki w tej samej domenie. Dodaj token sesji swojego API przez authHeaders. Klient dołącza te nagłówki do każdego żądania autoryzacji, w tym do żądań po ponownym połączeniu.
Klient wysyła identyfikator połączenia i nazwę kanału do authEndpoint. Subskrypcja kończy się dopiero po zatwierdzeniu wywołującego przez endpoint i zwróceniu prawidłowej sygnatury. Autoryzacja kanałów definiuje żądanie, odpowiedź i ciąg do podpisania.

Nazywanie kanałów na użytkownika lub na tenanta

Umieść zakres zasobu w nazwie kanału i zweryfikuj go w swoim endpoincie. Klient może zażądać dowolnej nazwy kanału, więc Twój backend musi zapobiegać subskrypcjom między klientami:
if (channel_name !== `private-orders-${user.accountId}`) {
  return res.sendStatus(403);
}
To porównanie stanowi decyzję autoryzacyjną. Nigdy nie polegaj na trudnych do odgadnięcia nazwach kanałów jako mechanizmie kontroli dostępu.

Co obsługują kanały prywatne

  • Zdarzenia klienta. Gdy aplikacja ma włączone zdarzenia klienta, zasubskrybowany klient może wysyłać zdarzenia client- do pozostałych klientów na kanale bez przechodzenia przez Twój serwer. Serwer brzegowy odrzuca je na kanałach publicznych.
  • Zliczanie połączeń. Gdy ustawienia zliczania połączeń i zdarzeń liczby połączeń w aplikacji są włączone, klient otrzymuje bird:connection_count dla kanału.
  • Publikowanie z serwera. Publikowanie z Twojego serwera działa dokładnie tak samo jak w przypadku kanału publicznego: podaj nazwę kanału w tablicy channels. Autoryzacja nie dotyczy Twojego serwera, który już posiada sekret aplikacji.
Kanały prywatne nie mają tożsamości członków ani zdarzeń członkostwa. Jeśli chcesz wiedzieć, kto jest obecny, użyj kanału obecności.

Gdy subskrypcja zostaje odrzucona

Odrzucona subskrypcja dociera jako bird:subscription_error. Typowe przyczyny to odpowiedź inna niż 2xx z Twojego endpointu lub sygnatura niezgodna z żądaniem. Zobacz Autoryzacja kanałów, aby rozwiązać problem.

Kolejne kroki