Streaming peristiwa langsung ke browser dan aplikasi seluler yang terhubung.
Kirim pembaruan pesanan langsung, stream token agen AI, status ruang kolaboratif, dan notifikasi dalam aplikasi melalui channel pub/sub terkelola tanpa perlu mengoperasikan infrastruktur WebSocket. Channel dibuat sesuai kebutuhan saat klien berlangganan dan ditutup saat koneksi terakhir keluar, dengan mode public, private, presence, encrypted, dan cache yang ditentukan langsung di nama channel.
channels.ts
4 berlangganan4 berlanggananconst bird = new BirdRealtime({ appKey: APP_KEY, region: "us1" }); // Public: anyone holding the app key can subscribe.const scores = bird.subscribe("match-42"); // Private: your backend signs every subscription.const order = bird.subscribe("private-order-ord_123"); // Presence: private, plus an identity the room can see.const room = bird.subscribe("presence-room-42"); // Cache: the latest event replays to whoever joins next.const build = bird.subscribe("cache-build-8821"); build.bind("bird:cache_miss", () => showSkeleton());
Koneksi 26896.319537
channels.ts
4 berlangganan4 berlanggananconst bird = new BirdRealtime({ appKey: APP_KEY, region: "us1" }); // Public: anyone holding the app key can subscribe.const scores = bird.subscribe("match-42"); // Private: your backend signs every subscription.const order = bird.subscribe("private-order-ord_123"); // Presence: private, plus an identity the room can see.const room = bird.subscribe("presence-room-42"); // Cache: the latest event replays to whoever joins next.const build = bird.subscribe("cache-build-8821"); build.bind("bird:cache_miss", () => showSkeleton());
Koneksi 26896.319537
channels.ts
4 berlangganan4 berlanggananconst bird = new BirdRealtime({ appKey: APP_KEY, region: "us1" }); // Public: anyone holding the app key can subscribe.const scores = bird.subscribe("match-42"); // Private: your backend signs every subscription.const order = bird.subscribe("private-order-ord_123"); // Presence: private, plus an identity the room can see.const room = bird.subscribe("presence-room-42"); // Cache: the latest event replays to whoever joins next.const build = bird.subscribe("cache-build-8821"); build.bind("bird:cache_miss", () => showSkeleton());
Koneksi 26896.319537
Atur akses dan perilaku ruang dengan prefiks channel.
Buat ruang sesuai kebutuhan tanpa menyiapkan registri channel.
Di API Realtime Bird, aplikasi Anda merutekan lalu lintas langsung dengan berlangganan ke nama channel yang peka huruf besar-kecil hingga 164 karakter, bukan dengan membuat ruang terlebih dahulu di database. Prefiks nama menentukan batas keamanan dan status: nama tanpa prefiks terbuka bagi pengunjung mana pun, private- mengharuskan backend Anda mengotorisasi pelanggan, presence- menambahkan daftar anggota terverifikasi, dan private-encrypted- mengenkripsi payload peristiwa secara end-to-end. Karena channel public dapat diikuti dengan app key publik Anda, gunakan prefiks yang memerlukan otorisasi untuk ID pelanggan dan tenant.
Sesuaikan mode channel dengan data yang Anda streaming.
Gunakan koneksi WebSocket dan panggilan publish backend yang sama untuk siaran publik, feed pelanggan terautentikasi, dan ruang kolaboratif.
- 01
Channel public.
Siarkan skor olahraga langsung, kedatangan transportasi, ticker inventaris, atau pembaruan status sistem ke pengunjung mana pun tanpa memanggil endpoint otorisasi. Karena siapa pun yang memiliki app key publik Anda dapat berlangganan, gunakan nama topik umum seperti scores-live, bukan menyematkan ID pelanggan di nama channel public.
- 02
Channel private.
Streaming pelacak pesanan pribadi, stream token agen AI, peringatan tagihan, dan notifikasi workspace melalui channel private-. Saat browser atau aplikasi seluler berlangganan, backend Anda memeriksa sesi pengguna dan menandatangani langganan dengan app secret Anda sehingga koneksi tanpa otorisasi tidak dapat menyadap.
- 03
Channel presence.
Bangun daftar kolaborator dokumen, bilah penonton langsung, dan ketersediaan antrean dukungan di channel presence-. Server Anda mengotorisasi setiap pelanggan dan melampirkan profil anggota terverifikasi, sehingga klien yang terhubung menerima daftar anggota ruang yang aktif serta pembaruan bergabung dan keluar secara real-time.
- 04
Channel terenkripsi.
Lindungi pembaruan akun sensitif, notifikasi keuangan, atau data workspace rahasia dengan channel private-encrypted-. Server Anda mengenkripsi setiap payload menggunakan master key 32 byte yang Anda simpan, lalu ciphertext dikirim melalui edge Realtime sementara nama channel dan peristiwa tetap terlihat untuk perutean.
- 05
Channel cache.
Berikan status terbaru kepada pengguna yang bergabung belakangan dan klien seluler yang terhubung ulang tepat saat berlangganan dengan menambahkan prefiks cache-. Realtime memutar ulang peristiwa terakhir yang dipublikasikan dengan TTL hingga 30 menit, dan memicu webhook cache-miss saat cache kosong agar server Anda dapat mengisi ulang snapshot status lengkap.
Sebarkan peristiwa backend ke hingga 100 channel dalam satu panggilan.
Publikasikan pembaruan dari backend atau worker latar belakang Anda dengan permintaan HTTP standar dan biarkan Bird menangani fan-out WebSocket ke browser dan perangkat yang terhubung. Satu panggilan dapat menyiarkan peristiwa ke hingga 100 channel (seperti feed pertandingan langsung dan kembaran cache-nya) atau mengelompokkan hingga 10 peristiwa berbeda untuk ruang yang berbeda. Anda dapat mengecualikan koneksi tab pemicu saat UI Anda sudah menerapkan pembaruan optimis, mengembalikan jumlah koneksi atau anggota langsung dalam respons publish, dan melampirkan idempotency key agar percobaan ulang jaringan tidak mengirimkan peristiwa duplikat.
// One event, up to 100 channels, one request.
const result = await bird.realtime.publish(APP_ID, {
event: "score-updated",
channels: ["match-42", "cache-match-42"],
data: { home: 2, away: 1 },
// The tab that scored already rendered it locally.
exclude_connection_id: "26896.319537",
include: ["connection_count"],
});
for (const channel of result.data ?? []) {
console.log(channel.name, channel.connection_count);
}
Streaming indikator mengetik dan kursor langsung antar-peer.
Sinyal UI sementara seperti indikator mengetik, koordinat penunjuk langsung, dan sorotan pilihan aktif tidak perlu melewati backend Anda. Saat Anda mengaktifkan client events di aplikasi, pelanggan yang terotorisasi di ruang private atau presence dapat menyiarkan peristiwa berprefiks client- langsung ke peserta lain di ruang tersebut hingga 10 pesan per detik per koneksi. Karena channel harus terautentikasi, pengunjung anonim tidak dapat menyiarkan dengan app key publik Anda, dan sinyal peer berfrekuensi tinggi tidak membebani server aplikasi Anda.
Padukan fan-out peristiwa berlatensi rendah dengan status aplikasi yang persisten.
Publikasi peristiwa berhasil begitu edge Realtime menerimanya untuk fan-out asinkron ke pelanggan yang sedang terhubung. Karena channel langsung mengirim pembaruan secara real-time dan tidak menyimpan antrean pesan untuk perangkat offline, simpan catatan persisten di database Anda dan gunakan peristiwa yang dipublikasikan atau channel cache untuk menyinkronkan layar yang terhubung. Batas yang sama berlaku di semua paket: hingga 100 channel per publish, 10 peristiwa per batch, 10 KB per payload peristiwa, dan nama channel 164 karakter.
Pelajari lebih lanjut di dokumentasi.
Baca ikhtisar Realtime untuk memahami cara channel, anggota, dan koneksi saling terkait. Ikuti panduan tentang memublikasikan peristiwa untuk fan-out multi-channel dan pengecualian UI optimis, channel cache untuk memutar ulang status bagi pengguna yang bergabung belakangan dan pemulihan cache-miss, serta mengkueri status channel untuk memeriksa okupansi ruang langsung dari backend Anda.
Terus membangun
dengan Realtime.
Gabungkan channel pub/sub dengan daftar anggota online langsung, kontrol akses yang ditandatangani server, dan webhook siklus hidup backend.
Presence
Tampilkan daftar anggota online langsung, hilangkan duplikasi tab terbuka berdasarkan identitas pengguna, dan kirim pesan langsung ke anggota tertentu.
→Keamanan
Otorisasi langganan ruang private di server Anda, autentikasi koneksi, dan enkripsi payload sensitif secara end-to-end.
→Webhooks
Picu alur kerja backend saat channel mulai terisi, menjadi kosong, berubah jumlah anggotanya, atau mengalami cache miss.
→Skalakan tanpa
kehilangan kendali.
Atur tim dalam workspace, kontrol akses API, dan lacak perubahan melalui log audit.
Organisasi
Harbor
Akses tetap dalam workspace-nya.
Produksi/Kunci API
Backend pelabuhan
AktifAlex Lee
Admin
Hari ini · UTC
Log audit
Organisasi
Harbor
Akses tetap dalam workspace-nya.
Produksi/Kunci API
Backend pelabuhan
AktifAlex Lee
Admin
Hari ini · UTC
Log audit
Organisasi
Harbor
Akses tetap dalam workspace-nya.
Produksi/Kunci API
Backend pelabuhan
AktifAlex Lee
Admin
Hari ini · UTC
Log audit