Channel adalah sebuah nama. Tidak perlu penyediaan.

Channel ada begitu sesuatu berlangganan padanya dan menghilang ketika koneksi terakhir pergi. Namanya menentukan tipe: public untuk apa pun yang boleh dibaca pengunjung, private untuk apa pun yang dicakupkan ke satu pelanggan, presence untuk ruang dengan daftar anggota, dan prefiks cache untuk state yang langsung dibutuhkan peserta yang baru bergabung.

channels.ts
4 subscribed
const 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());

Prefiks adalah konfigurasinya.

Tidak ada registri channel yang perlu disinkronkan.

Channel adalah model pengalamatan dari Bird Realtime API. Anda tidak perlu membuatnya: Anda berlangganan ke sebuah nama, dan tiga karakter pertama nama itu memberi tahu edge cara memperlakukannya. Nama tanpa prefiks bersifat public. private- meminta backend Anda menyetujui setiap langganan. presence- melakukan hal yang sama dan melampirkan identitas. private-encrypted- menyegel payload dengan kunci yang tidak pernah dipegang Bird. Nama dapat berisi hingga 164 karakter, bersifat case-sensitive, dan merupakan satu-satunya bagian channel yang perlu Anda pikirkan dengan cermat, karena nama public dapat dilihat oleh siapa pun yang memegang app key.

Lima jenis ruang.

Protokol sama, klien sama, panggilan publish sama. Yang berbeda adalah namanya.

  1. 01

    Channel public.

    Tidak ada endpoint otorisasi, tidak ada registrasi. Siapa pun yang memegang app key dapat berlangganan, sehingga cocok untuk hasil build, skor langsung, informasi penerbangan, atau halaman status, dan tidak cocok untuk apa pun yang dicakupkan ke satu pelanggan. Jangan masukkan identifier ke dalam nama: orders tidak mengungkapkan apa pun, orders-user-4821 mengungkapkan bahwa user 4821 ada.

  2. 02

    Channel private.

    Nama private- mengarahkan langganan melalui endpoint Anda sendiri, yang memeriksa sesi dan menandatangani connection id serta nama channel dengan app secret. Aturan Anda, sesi Anda, 403 Anda. Edge memverifikasi tanda tangan dan tidak ada hal lain yang mencapai channel.

  3. 03

    Channel presence.

    Otorisasi channel private ditambah identitas, sehingga setiap subscriber mendapatkan daftar anggota dan mendengar tentang kedatangan serta kepergian. Ini satu-satunya tipe channel yang memiliki roster.

  4. 04

    Channel terenkripsi.

    Channel private-encrypted- membawa payload yang disegel server Anda dengan master key 32-byte yang tidak pernah muncul dalam permintaan Realtime. Edge dan semua yang berada di antaranya dengan browser hanya melihat ciphertext. Nama channel dan event tetap dalam teks biasa, jadi pilih nama yang tidak membocorkan apa yang Anda lindungi.

  5. 05

    Channel cache.

    Awali nama dengan cache-, setelah prefiks tipe apa pun, dan channel mengingat event terakhir yang dipublikasikan melalui API lalu memutarnya ulang ke setiap subscriber baru. Langganan sekaligus berfungsi sebagai pengambilan state awal. Dua batasan yang perlu dipertimbangkan dalam desain: hanya event terbaru yang disimpan, dan event itu bisa kedaluwarsa sebelum batas 30 menit, jadi masukkan seluruh state di setiap payload dan isi ulang dari webhook cache-miss alih-alih menganggap cache selalu terisi.

Satu publish, hingga seratus channel.

Publishing adalah panggilan REST biasa dari server Anda. Cantumkan hingga 100 channel dalam satu permintaan dan edge akan menyebarkan event ke semuanya. Satu batch membawa hingga 10 event yang tidak terkait, masing-masing ke channel-nya sendiri. Kirimkan connection id klien yang bertindak sebagai exclude_connection_id dan tab yang sudah menerapkan perubahan secara lokal akan dilewati. Minta jumlah koneksi atau anggota dengan include dan respons akan memberi tahu Anda state setiap channel pada saat publish. Coba lagi dengan idempotency key yang sama dan Anda tidak akan mengirim dua kali.

publish.ts
200 · accepted
// 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);
}

Klien dapat berkomunikasi langsung satu sama lain.

Indikator sedang mengetik atau posisi kursor tidak perlu melewati API Anda. Aktifkan client events pada app dan klien yang berlangganan dapat memicu event bernama client-something langsung ke klien lain di channel, dibatasi 10 per detik per koneksi. Client events hanya berfungsi di channel private dan presence, dan ini disengaja: app key dikirim di halaman Anda, jadi otorisasilah yang membuat klien cukup tepercaya untuk melakukan broadcast. Perlakukan apa yang diterima sebagai sinyal, bukan sebagai state otoritatif, karena edge tidak memvalidasi payload.

Apa yang diingat dan tidak diingat channel.

Publish mengembalikan respons begitu edge menerima event. Pengiriman bersifat asinkron, tidak ada tanda terima per klien, dan klien yang terputus di tengah pengiriman tidak akan menerima event itu lagi saat reconnect. Itulah kontrak yang jujur, dan itulah mengapa state yang tahan lama ada di database Anda sementara event mengumumkan bahwa state telah berubah. Batas berlaku sama di setiap paket: 100 channel per publish, 10 event per batch, 10 KB per payload, nama channel 164 karakter.

Pelajari lebih lanjut di dokumentasi.

Gambaran umum Realtime mendefinisikan channel, anggota, dan koneksi dalam satu halaman. Publishing events membahas broadcast, batch, dan exclusion, channel cache menjelaskan replay, dan querying channel state adalah pembacaan sisi server untuk occupancy dan jumlah.

Skalakan tanpa
kehilangan kendali.

Atur tim dalam workspace, kontrol akses API, dan lacak perubahan melalui log audit.

BirdHarborOrganisasi
WorkspaceProduksiSandbox

Agen pengiriman

Kunci API · Tim operasional pelanggan
Aktif
IzinAkses
EmailBaca & tulis
SMSBaca & tulis
ALAlex Lee AdminIzin diperbarui

Log audit

Produksi
Workspace
Produksi
Sumber daya
Agen pengiriman
WhatsApp
Akses bacaBaca & tulis
Berhasil

Mulai dengan Realtime.
Bangun lintas kanal dengan Bird.

Ide Anda berikutnya. Siap terhubung.