Sign inGet started

Cache channel

Cache channel menyimpan event terakhirnya dan memutar ulang event tersebut ke setiap subscriber baru. Klien yang terhubung setelah pembaruan dapat merender state terkini tanpa menunggu publish berikutnya.
Gunakan cache channel untuk nilai terkini seperti skor pertandingan, state perangkat, progres build, atau status pesanan. Subscription menyediakan state awal dan pembaruan selanjutnya.

Memberi nama cache channel

Nama channel mengaktifkan caching. Letakkan cache- di awal nama atau tepat setelah prefix tipe channel-nya.
NamaDi-cacheSubscription
cache-ordersyasiapa pun yang memiliki app key
private-cache-ordersyabackend Anda menandatangani untuk klien
presence-cache-lobbyyabackend Anda menandatangani, member dilacak
orders-cachetidaksiapa pun yang memiliki app key
orders-cache bukan cache channel. Prefix cache- harus berada di awal nama setelah prefix private- atau presence-.
Semua hal lain tentang channel tidak berubah. Channel private-cache- melakukan otorisasi persis seperti private channel, dan channel presence-cache- tetap melacak member dan memicu event member seperti presence channel lainnya.

Berlangganan

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");
});
Saat hit, event yang di-cache tiba setelah subscription berhasil. Event tersebut membawa nama event dan payload asli, sehingga handler yang sama memproses event yang di-cache maupun event langsung.
Saat miss, klien menerima bird:cache_miss pada channel tersebut. Bisa jadi channel belum pernah menerima publish atau event yang di-cache sudah kedaluwarsa.

Mengisi cache saat miss

Jika sebuah endpoint berlangganan ke realtime.cache_channels, miss juga sampai ke server Anda. Tangani webhook tersebut dengan membaca state terkini dan mempublikasikannya ke channel.
await bird.realtime.publish(appId, {
  event: "score-updated",
  channels: ["cache-match-42"],
  data: await currentScore(42),
});
Klien yang menyebabkan miss sudah berlangganan sebelum server Anda mempublikasikan event pengganti, sehingga klien tersebut menerima state baru. Alur ini juga mengisi cache kosong untuk subscriber pertamanya.

Isi cache dan retensi

Event yang dipublikasikan melalui API di-cache, termasuk publish tunggal dan batch. Event klien yang namanya dimulai dengan client- tidak di-cache.
Event yang di-cache dapat tetap tersedia hingga 30 menit, tetapi bisa kedaluwarsa lebih awal. Isi ulang channel yang jarang diperbarui dari webhook cache-miss daripada berasumsi cache masih aktif.
Setiap channel hanya menyimpan event terbaru. Jika Anda mempublikasikan score-updated lalu match-ended, subscriber baru hanya menerima match-ended. Gunakan satu nama event per cache channel, atau sertakan state lengkap di setiap payload.

Batasan cache

Cache channel hanya menyimpan event terbaru. Cache tidak menyimpan riwayat event. Klien yang melewatkan dua pembaruan saat offline menerima state terbaru tanpa event perantara. Simpan state yang persisten di database Anda. Setelah terhubung kembali, klien berlangganan ulang dan merender event yang di-cache jika masih tersedia. Lihat Mempublikasikan event untuk jaminan pengiriman.

Langkah selanjutnya

Sumber daya terkait

Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini. Sumber daya tersedia dalam bahasa Inggris.

Coba praktiknya dan dapatkan ringkasan implementasi