Pembaruan pesanan dapat memiliki dua konsumen: database Anda dan pelanggan yang memantau halaman pesanan. Keduanya membutuhkan perilaku pemulihan yang berbeda saat koneksi terputus.
Database Anda membutuhkan catatan event yang dapat dipulihkan. Halaman pelanggan mungkin hanya membutuhkan state pesanan terbaru setelah terhubung kembali.
Apa saja empat opsi tersebut?
Bird menyediakan webhook, Realtime, stream event dashboard, dan pembacaan API yang dapat Anda polling.
Gunakan webhook untuk menerima event di server Anda. Gunakan Realtime untuk memperbarui klien yang terhubung. Stream SSE mengirim perubahan resource ke sesi dashboard. Polling memungkinkan aplikasi Anda membaca state resource sesuai jadwal.
| Mekanisme | Arah | Autentikasi | Pemulihan setelah pemutusan koneksi |
|---|---|---|---|
| Webhook | Bird mengirim ke server Anda. | Receiver Anda memverifikasi tanda tangan dengan endpoint secret-nya. | Pengiriman gagal dicoba lagi. Event yang terlewat dapat diputar ulang. |
| Realtime | Server Anda mempublikasikan ke klien yang terhubung. | Klien terhubung dengan app key. Langganan privat memerlukan otorisasi backend. | Klien yang terhubung kembali memerlukan pemulihan state. |
| SSE stream | Bird mengirim perubahan resource ke sesi dashboard. | Cookie sesi dashboard. | Baca resource kembali untuk mendapatkan state-nya. |
| Polling | Aplikasi Anda meminta state ke Bird. | Kunci API. | Pembacaan berikutnya mengembalikan state resource, tanpa merekonstruksi setiap transisi. |
Kapan webhook menjadi jawaban yang tepat?
Gunakan webhook saat server Anda perlu bertindak berdasarkan event dan memulihkan pengiriman yang terlewat.
Anda mendaftarkan endpoint HTTPS yang dapat dijangkau secara publik. Daftarkan endpoint tersebut ke tipe event yang Anda butuhkan. Receiver Anda memverifikasi tanda tangan terlebih dahulu. Kemudian menyimpan event. Receiver mengonfirmasi pengiriman sebelum pemrosesan yang lambat dimulai.
Bird melakukan hingga delapan percobaan selama kurang lebih 27,5 jam sebelum penyesuaian waktu. Jendela tersebut memberi receiver waktu untuk pulih dari gangguan. Pemutaran ulang event yang terlewat menyediakan jalur pemulihan tambahan.
Deduplikasi berdasarkan webhook-id karena event yang sama dapat tiba berulang kali. Bandingkan waktu kemunculan event sebelum menimpa state karena event dapat tiba tidak berurutan.
Retry webhook yang gagal membahas batas pemulihan. Penanganan duplikat membahas cara menyimpan event dengan aman sebelum mengembalikan respons sukses.
Kapan saya harus menggunakan Realtime?
Gunakan Realtime saat browser atau aplikasi yang terhubung membutuhkan pembaruan saat server Anda mempublikasikannya.
Channel adalah tujuan bernama tempat klien berlangganan. Server Anda mempublikasikan event ke nama tersebut, dan klien yang berlangganan menerimanya melalui koneksi mereka. Ini dapat memperbarui halaman pesanan, percakapan chat, atau tampilan progres tanpa perlu muat ulang.
Realtime tidak memutar ulang setiap event yang terlewat oleh klien yang terputus. Simpan state tahan lama di database Anda dan pulihkan tampilan setelah terhubung kembali.
Cache channel menyimpan event terbarunya untuk pelanggan baru selama nilai cache tersebut masih tersedia. Channel ini tidak menyimpan riwayat event. Jika dua pembaruan terjadi saat klien offline, nilai cache terbaru tidak dapat memulihkan pembaruan di antaranya.
App key tampil di kode klien, sehingga channel publik dapat dibaca oleh pengunjung yang memiliki kunci tersebut. Channel yang diawali dengan private- mengharuskan backend Anda mengotorisasi langganan. Channel presence- juga membagikan identitas anggota yang berlangganan.
Nama channel menerima 1 hingga 164 karakter menggunakan huruf, angka, dan _ - = @ , . ;. Prefiks adalah bagian dari batas tersebut, jadi sertakan saat memvalidasi nama yang dihasilkan.
Realtime juga mengirim webhook saat channel mendapat pelanggan pertamanya atau kehilangan pelanggan terakhirnya. Webhook keanggotaan melaporkan anggota mana yang bergabung atau keluar. Konfigurasikan melalui dashboard. Publish/subscribe versus webhook menjelaskan bagaimana kedua mekanisme ini saling melengkapi.
Apakah Bird memiliki endpoint SSE?
Bird memiliki endpoint SSE, getEventsStream, untuk sesi dashboard yang terautentikasi.
GET /v1/events/stream melaporkan perubahan pada resource API. Notifikasi mengidentifikasi tipe resource, identifier, dan waktu kemunculan sehingga dashboard dapat mengambil data resource tersebut.
Endpoint ini menerima cookie sesi dashboard. Endpoint ini tidak menerima kunci API, jadi gunakan webhook atau polling untuk integrasi berbasis kunci API.
Kapan polling tepat digunakan?
Gunakan polling saat Anda membutuhkan state resource, tidak dapat menerima permintaan masuk, atau tidak memiliki event publik untuk perubahan tersebut.
Gunakan polling untuk memeriksa apakah operator menyetujui nomor bebas pulsa Anda untuk mengirim teks. Bird tidak memiliki event webhook publik untuk keputusan verifikasi tersebut. Baca verifikasi sesuai jadwal melalui bird sms tfn verifications get, atau agent tool yang sesuai. Operasi command berada di luar bundle publik API.
Polling juga cocok untuk jaringan yang mengizinkan permintaan keluar tetapi tidak dapat mengekspos receiver. Jika Anda hanya membutuhkan state saat ini, membaca resource menghindari kebutuhan merekonstruksinya dari event sebelumnya.
Pembacaan dan pencarian daftar mengonsumsi anggaran pembatasan laju permintaan per kredensial aktif dalam organisasi. Tunggu sebelum mengirim permintaan lagi setelah respons HTTP 429. Sesuaikan interval dengan seberapa cepat aplikasi Anda perlu mendeteksi perubahan.
Webhook, Realtime, dan pembatasan laju permintaan membahas konfigurasi untuk jalur-jalur ini.
Mana yang harus saya pilih?
Pilih berdasarkan siapa yang mengonsumsi pembaruan dan apa yang harus bertahan dari pemutusan koneksi.
- Webhook saat server Anda harus memproses event dengan retry dan pemulihan event yang terlewat.
- Realtime saat layar yang terhubung membutuhkan pembaruan dan dapat pulih dari state tersimpan setelah terhubung kembali.
- Polling saat Anda membutuhkan state resource, tidak dapat mengekspos receiver, atau tidak memiliki event publik.
- SSE stream untuk sesi dashboard Bird yang terautentikasi.
Singkatnya
Pilih webhook untuk menangani event sisi server.
Gunakan retry dan pemutaran ulang event yang terlewat saat server Anda perlu memulihkan pengiriman setelah gangguan.
Pilih Realtime untuk layar yang terhubung.
Pulihkan tampilan dari state tersimpan saat klien terhubung kembali.
Pilih polling untuk state resource.
Gunakan polling saat Anda tidak dapat mengekspos receiver, tidak memiliki event publik, atau hanya membutuhkan state resource.
Gunakan SSE untuk sesi dashboard Bird.
Stream ini memerlukan autentikasi sesi dashboard.