Pembaruan real-time menyediakan jalur komunikasi instan dari server Anda langsung ke penginstalan ekstensi Anda. Anda dapat mengirim dan menerima data saat peristiwa terjadi. Baik Anda menggunakannya untuk mengirim pesan instan, memicu tugas latar belakang, atau menyinkronkan data perangkat, ini adalah operasi penting dengan sejumlah layanan modern. Ada sejumlah opsi untuk melakukan komunikasi real-time di ekstensi Chrome.
- Web Push, atau Push API, adalah standar web yang memungkinkan Anda mengirim dan menerima pesan di ekstensi Chrome dari penyedia Push mana pun, atau bahkan dengan server web Anda sendiri.
- browser.gcm adalah API khusus ekstensi lama yang memungkinkan Anda mengirim dan menerima pesan menggunakan Firebase Cloud Messaging.
- WebSockets adalah protokol tingkat rendah yang memungkinkan Anda membuka koneksi dua arah antara ekstensi Chrome dan server Anda.
Skenario umum
Berikut beberapa skenario umum dalam ekstensi Chrome yang memerlukan komunikasi real-time:
Pastikan pengguna selalu mendapatkan info terbaru tentang perubahan.
Jika Anda menyinkronkan file, setelan, atau informasi lainnya di antara beberapa pengguna, maka Web Push adalah cara yang tepat untuk mengirim pembaruan senyap ke ekstensi Anda agar ekstensi tersebut mengetahui bahwa status harus diperbarui dari server.
Apakah Anda mengizinkan pengguna melaporkan bug atau masalah? Anda dapat berintegrasi dengan penyedia Push untuk memberi tahu mereka segera setelah Anda memiliki info terbaru untuk dibagikan, langsung di ekstensi Anda.
Mengirim notifikasi kepada pengguna.
Meskipun Anda dapat mengirim notifikasi sepenuhnya di sisi klien, jika Anda memiliki logika sisi server untuk menentukan siapa, apa, di mana, atau kapan harus mengirim notifikasi, maka Web Push adalah opsi yang paling siap untuk masa depan.
Untuk mengirim pesan hanya ke sebagian kecil pengguna, maka Push adalah pilihan terbaik.
Meskipun Firebase Cloud Messaging menawarkan Topik (juga dikenal sebagai saluran), fitur ini hanya tersedia di HTTP Cloud Messaging API mereka. Hal ini berbeda dengan versi lama yang digunakan browser.gcm. Jika Anda ingin mengirim pesan luas ke semua pengguna, termasuk pengguna yang menggunakan Chrome versi lama (sebelum Chrome 121), maka browser.gcm adalah opsi yang ideal. Dibangun di atas API pesan Firebase Lama, browser.gcm telah didukung di Chrome selama lebih dari satu dekade.
Anda dapat menggunakan Push Web atau browser.gcm untuk mengirim notifikasi kepada pengguna saat terjadi sesuatu yang penting pada akun mereka, seperti saat pesan baru tiba atau saat file dibagikan.
Pesan Instan
Perlu komunikasi dua arah yang sering? Maka, web socket mungkin merupakan opsi terbaik untuk Anda. Hal ini membuka koneksi dua arah antara ekstensi dan server Anda (atau bahkan langsung ke pengguna lain). API ini memungkinkan Anda bertukar data dan pesan secara real time. Meskipun secara umum merupakan opsi yang bagus di web, ada beberapa batasan dengan ekstensi yang perlu Anda perhatikan jika Anda berencana menggunakannya.
Di bagian selanjutnya dalam panduan ini, kita akan mempelajari lebih lanjut opsi yang tersedia.
Notifikasi push dengan Push API
Dengan Push API, Anda dapat menggunakan penyedia Push apa pun untuk mengirim notifikasi dan pesan push. Pemberitahuan push dari Push API akan diproses oleh service worker Anda segera setelah diterima. Jika ekstensi telah ditangguhkan, Push akan mengaktifkannya kembali. Proses untuk menggunakannya di ekstensi sama persis dengan yang Anda gunakan di web terbuka.
Notifikasi push dengan browser.gcm
API browser.gcm menyediakan koneksi langsung ke Firebase Cloud Messaging (FCM), layanan untuk mengirim update real-time ke aplikasi web dan aplikasi seluler. Ini adalah API ekstensi khusus Chrome yang ditambahkan bertahun-tahun sebelum Push tersedia di browser. Aplikasi ini dibuat menggunakan HTTP API lama Firebase (yang kini tidak digunakan lagi). Meskipun API tersebut tidak digunakan lagi di tempat lain, API tersebut tidak tidak digunakan lagi di ekstensi. Token tersebut akan terus berfungsi dalam waktu dekat. Namun, karena merupakan backend push lama, backend ini tidak memiliki fitur seperti Topics.
Meskipun layanan backend FCM adalah persyaratan wajib agar notifikasi dapat menjangkau pengguna di Chrome, Anda tidak perlu menggunakan browser.gcm untuk mengirim pesan.
Semua penyedia Push dapat mengirim dan menerima pesan serta peristiwa ke akun Firebase menggunakan Push web. Meskipun masih merupakan API Ekstensi Chrome yang didukung sepenuhnya, praktik terbaiknya adalah lebih memilih standar web seperti Push API daripada API khusus ekstensi seperti ini. Jika kasus penggunaan Anda lebih baik dilayani dengan browser.gcm, ada cara penggunaan yang mendetail tentang cara menyiapkan browser.gcm dari awal.
Pesan real-time dengan WebSockets
WebSockets telah menjadi fondasi pesan real-time di web selama lebih dari satu dekade. Fitur ini telah menjadi opsi utama untuk acara real time di web, yang menyediakan percakapan dua arah yang berkelanjutan. WebSocket berfungsi di berbagai komponen ekstensi, baik skrip konten, pop-up, panel samping, atau service worker latar belakang. Meskipun secara umum merupakan opsi yang bagus di web, ada beberapa batasan terkait ekstensi yang perlu Anda perhatikan jika berencana menggunakannya.
Tidak bagus untuk notifikasi push
Karena WebSockets berjalan di platform web, bukan menggunakan API platform ekstensi seperti browser.gcm, Chrome tidak dapat mengaktifkan ekstensi Anda saat koneksi Websocket dimulai di luar ekstensi Anda.
Hanya koneksi aktif
Chrome menangguhkan ekstensi yang tidak digunakan setelah 30 detik. Sejumlah heuristik digunakan Chrome untuk menentukan apakah ekstensi "sedang digunakan", salah satunya adalah koneksi WebSocket aktif. Chrome tidak akan menangguhkan ekstensi yang telah mengirim atau menerima pesan WebSocket dalam 30 detik terakhir. Jika Anda menggunakan WebSockets di ekstensi dan perlu memastikan bahwa koneksi tidak ditutup sebelum waktunya, Anda dapat mengirim pesan detak jantung untuk mempertahankan koneksi. Hal ini melibatkan pengiriman pesan berkala ke server, sehingga server dan Chrome mengetahui bahwa Anda masih aktif. Contoh cara mempertahankan koneksi websocket tanpa batas waktu tersedia di dokumentasi WebSocket kami.