Sign inGet started

Kanały cache

Kanał cache zapamiętuje swoje najnowsze zdarzenie i odtwarza je każdemu nowemu subskrybentowi. Klient, który połączy się po aktualizacji, może wyrenderować bieżący stan bez czekania na kolejną publikację.
Używaj kanałów cache do bieżących wartości, takich jak wynik meczu, stan urządzenia, postęp kompilacji czy status zamówienia. Subskrypcja dostarcza stan początkowy i późniejsze aktualizacje.

Nazwij kanał cache

Nazwa kanału włącza buforowanie. Umieść cache- na początku nazwy lub bezpośrednio po prefiksie typu kanału.
NazwaCacheSubskrypcja
cache-orderstakkażdy posiadający klucz aplikacji
private-cache-orderstakTwój backend podpisuje za klienta
presence-cache-lobbytakTwój backend podpisuje, członkowie śledzeni
orders-cacheniekażdy posiadający klucz aplikacji
orders-cache nie jest kanałem cache. Prefiks cache- musi znajdować się na początku nazwy, po ewentualnym prefiksie private- lub presence-.
Wszystko inne w kanale pozostaje bez zmian. Kanał private-cache- autoryzuje się dokładnie tak jak kanał prywatny, a kanał presence-cache- nadal śledzi członków i emituje zdarzenia członkowskie jak każdy inny kanał presence.

Subskrypcja

const bird = new BirdRealtime({ appKey: "your-app-key", region: "us1" });

const match = bird.subscribe("cache-match-42");

match.bind("score-updated", (data) => {
  render(data);
});

match.bind("bird:cache_miss", () => {
  console.log("nothing cached for this channel yet");
});
Przy trafieniu zbuforowane zdarzenie dociera po pomyślnej subskrypcji. Niesie oryginalną nazwę zdarzenia i payload, więc ten sam handler przetwarza zdarzenia z cache i na żywo.
Przy chybieniu klient otrzymuje bird:cache_miss na tym kanale. Kanał albo nigdy nie otrzymał publikacji, albo jego zbuforowane zdarzenie wygasło.

Uzupełnianie cache przy chybieniu

Jeśli endpoint subskrybuje realtime.cache_channels, chybienie dociera również do Twojego serwera. Obsłuż webhook, odczytując bieżący stan i publikując go na kanale.
await bird.realtime.publish(appId, {
  event: "score-updated",
  channels: ["cache-match-42"],
  data: await currentScore(42),
});
Klient, który spowodował chybienie, jest zasubskrybowany zanim Twój serwer opublikuje zdarzenie zastępcze, więc otrzyma nowy stan. Ten przepływ wypełnia też pusty cache dla pierwszego subskrybenta.

Zawartość cache i czas przechowywania

Zdarzenia opublikowane przez API są buforowane, w tym pojedyncze i wsadowe publikacje. Zdarzenia klienckie, których nazwy zaczynają się od client-, nie są buforowane.
Zbuforowane zdarzenia mogą pozostawać dostępne do 30 minut, ale mogą wygasnąć wcześniej. Uzupełniaj rzadko aktualizowane kanały z webhooka cache-miss zamiast zakładać, że cache jest nadal aktywny.
Każdy kanał zapamiętuje tylko swoje najnowsze zdarzenie. Jeśli opublikujesz score-updated, a następnie match-ended, nowy subskrybent otrzyma tylko match-ended. Używaj jednej nazwy zdarzenia na kanał cache lub dołączaj kompletny stan w każdym payloadzie.

Ograniczenia cache

Kanał cache przechowuje tylko najnowsze zdarzenie. Nie zachowuje historii zdarzeń. Klient, który przegapi dwie aktualizacje w trybie offline, otrzymuje najnowszy stan bez pośredniego zdarzenia. Trwały stan przechowuj w swojej bazie danych. Po ponownym połączeniu klient ponownie subskrybuje i renderuje zbuforowane zdarzenie, jeśli jest nadal dostępne. Zobacz Publikowanie zdarzeń, aby poznać gwarancje dostarczenia.

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