Halaman pesanan bisa memerlukan pembaruan bersamaan dengan database Anda. Webhook dapat memicu perubahan database. Server Anda kemudian dapat mempublikasikan state yang dihasilkan ke layar yang terhubung.
Bird Realtime mengirimkan pembaruan melalui WebSocket.
Apa itu channel, member, dan koneksi?
Channel mengelompokkan langganan. Koneksi adalah satu WebSocket yang terbuka. Member adalah identitas terautentikasi yang dibagikan kepada subscriber lain.
Channel presence membagikan member mana saja yang berlangganan. Satu member dapat menggunakan beberapa koneksi, misalnya tab browser terpisah.
Bird membuat channel saat koneksi pertamanya berlangganan dan menghapusnya setelah koneksi terakhir keluar. Anda mempublikasikan ke nama channel tanpa membuat resource channel terpisah.
Setiap koneksi menerima sebuah identifier. Backend Anda menggunakannya untuk menyetujui langganan private. Sebuah publish dapat mengecualikan koneksi tersebut agar tidak mengulangi pembaruannya sendiri.
Jika satu member membuka tiga tab, tab-tab tersebut dapat membuat tiga koneksi di bawah satu identitas member. Presence melaporkan member bergabung pada koneksi pertama dan keluar setelah koneksi terakhir ditutup. Menutup tab tengah tidak menghapus member tersebut dari daftar.
Siapa yang boleh berlangganan?
Prefiks channel menentukan apakah langganan memerlukan otorisasi dari backend Anda.
Anda memilih nama channel Bird dari 1 hingga 164 karakter, menggunakan huruf, angka, dan _ - = @ , . ;. Sertakan prefiks dalam panjang tersebut agar nama private yang dihasilkan tetap dalam batas.
| Prefiks nama | Akses |
|---|---|
| Tanpa prefiks private atau presence | Publik untuk klien yang memiliki app key. |
private- | Backend Anda menyetujui dan menandatangani setiap langganan. |
presence- | Backend Anda menyetujui langganan dan menyediakan identitas member yang dibagikan ke subscriber. |
private-encrypted- | Akses private dengan konten event dienkripsi menggunakan kunci yang Anda kendalikan. |
App key tampil di kode klien, jadi nama channel publik yang tidak jelas tidak melindungi data rahasia. Simpan app secret di server Anda dan gunakan untuk menandatangani persetujuan langganan.
Untuk langganan private, klien mengirim identifier koneksinya dan nama channel ke endpoint otorisasi Anda. Server Anda memeriksa akses sebelum mengembalikan tanda tangan. Endpoint tersebut mengotorisasi akses. Endpoint ini tidak menerima setiap event yang dipublikasikan sebagaimana webhook.
Apa arti perbedaan ini dalam praktik?
Gunakan webhook untuk pekerjaan yang dapat dipulihkan di server Anda. Gunakan pub/sub untuk pembaruan ke klien yang terhubung.
Webhook Bird mengirim event ke endpoint HTTPS yang Anda operasikan. Percobaan ulang berlangsung sekitar 27,5 jam, dengan jeda yang disesuaikan berdasarkan variasi acak, kelebihan beban penerima, dan penundaan yang diminta. Jendela waktu tersebut memberi penerima Anda waktu untuk pulih. Pemutaran ulang event yang terlewat dapat memulihkan pengiriman yang tetap gagal.
Channel Realtime mengirim event yang Anda publikasikan ke klien yang berlangganan. Klien yang terputus dapat melewatkannya. Channel cache dapat menyediakan event terbarunya ke subscriber baru selama event tersebut masih di-cache. Channel ini tidak menyimpan riwayat event di antaranya.
Simpan pemrosesan rahasia di sisi server di balik penerima webhook Anda. Publikasikan hanya state yang boleh dilihat oleh klien yang diotorisasi pada channel tersebut.
Tipe event webhook berasal dari katalog Bird, seperti email.delivered. Dengan Realtime, Anda memilih nama event aplikasi Anda saat mempublikasikan. Nama event menerima 1 hingga 200 karakter. Prefiks bird: dan bird_internal: dicadangkan dan tidak dapat digunakan untuk menamai event aplikasi Anda.
Klien juga menerima event protokol tentang keberhasilan langganan, perubahan member, dan jumlah koneksi. Event tersebut mendeskripsikan koneksi atau channel itu sendiri, bukan pesanan atau pesan aplikasi Anda.
Bagaimana cara menggunakannya bersama-sama?
Gunakan event tersimpan dari webhook untuk mendorong pembaruan Realtime bagi klien yang terhubung.
Terima event bisnis di server Anda. Perbarui state tahan lama sebelum mempublikasikan. Kemudian publikasikan state yang dibutuhkan klien yang terhubung.
Untuk halaman pesanan, webhook dapat memicu pembaruan database. Server Anda kemudian mempublikasikan state pesanan yang diperbarui sehingga halaman pelanggan berubah tanpa perlu refresh.
Pastikan state database tersebut dapat dibaca setelah terhubung kembali karena klien yang terputus dapat melewatkan publikasi. Webhook, polling, atau streaming membandingkan pilihan pemulihan.
Realtime juga memiliki webhook-nya sendiri untuk okupansi channel dan kedatangan atau kepergian member. Konfigurasikan ini melalui dashboard, bukan melalui API webhook publik.
Ringkasan Realtime membahas koneksi klien. Webhook membahas permintaan yang dikirimkan ke server Anda.
Singkatnya
Sebuah channel dapat memiliki banyak subscriber.
Permintaan webhook ditujukan ke satu endpoint terdaftar. Sebuah publikasi dikirim ke klien yang berlangganan channel-nya.
Langganan private memerlukan persetujuan backend.
App key tampil di kode klien. Prefiks private dan presence memerlukan tanda tangan dari server Anda.
Member dapat memiliki beberapa koneksi.
Seorang member yang menggunakan tiga tab bergabung ke presence pada koneksi pertama dan keluar setelah koneksi terakhir ditutup.
Gabungkan pemulihan pengiriman dengan tampilan yang terhubung.
Gunakan pemulihan webhook untuk event server dan state tersimpan untuk memulihkan tampilan Realtime setelah terputus.