Pembaruan real-time di Ekstensi

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 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.
  • chrome.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 di ekstensi Chrome yang memerlukan komunikasi real-time:

Memastikan pengguna mendapatkan informasi terbaru tentang perubahan.

Jika Anda menyinkronkan file, setelan, atau informasi lainnya di antara beberapa pengguna, 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 pembaruan yang akan 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 tahan lama.

Untuk mengirim pesan hanya ke sebagian pengguna, Push adalah pilihan terbaik. Meskipun Firebase Cloud Messaging menawarkan Topik (juga dikenal sebagai saluran), topik hanya tersedia di HTTP Cloud Messaging API. Hal ini berbeda dengan versi lama yang digunakan chrome.gcm. Jika Anda ingin mengirim pesan luas kepada semua pengguna, termasuk pengguna yang menggunakan Chrome versi lama (sebelum Chrome 121), chrome.gcm adalah opsi yang ideal. chrome.gcm, yang dibuat berdasarkan Legacy Firebase messaging API, telah didukung di Chrome selama lebih dari satu dekade.

Anda dapat menggunakan Web Push atau chrome.gcm untuk mengirim notifikasi kepada pengguna saat terjadi sesuatu yang penting bagi akun mereka, seperti saat pesan baru tiba atau saat file dibagikan.

Pesan Instan

Perlu komunikasi dua arah yang sering? Maka, soket web mungkin merupakan opsi terbaik untuk Anda. Soket web membuka koneksi dua arah antara ekstensi dan server Anda (atau bahkan langsung ke pengguna lain). Soket web memungkinkan Anda bertukar data dan pesan secara real time. Meskipun soket web adalah opsi yang bagus di web secara umum, soket web memiliki beberapa batasan dengan ekstensi yang perlu Anda ingat jika Anda berencana menggunakannya.

Di bagian panduan ini, kita akan mempelajari lebih lanjut opsi yang tersedia.

Notifikasi push dengan Push API

Dengan Push API, Anda dapat menggunakan penyedia Push mana pun untuk mengirim notifikasi dan pesan push. Push dari Push API akan diproses oleh pekerja layanan Anda segera setelah diterima. Jika ekstensi telah ditangguhkan, Push akan mengaktifkannya kembali. Proses untuk menggunakannya di ekstensi sama persis dengan yang akan Anda gunakan di web terbuka.

Notifikasi push dengan chrome.gcm

chrome.gcm Ini adalah API ekstensi khusus Chrome yang ditambahkan bertahun-tahun sebelum Push tersedia di browser. API 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. API tersebut akan terus berfungsi dalam waktu dekat. Namun, karena ini adalah backend push lama, API ini tidak memiliki fitur seperti Topik.

Meskipun layanan backend FCM adalah persyaratan yang sulit untuk notifikasi menjangkau pengguna di Chrome, Anda tidak perlu menggunakan chrome.gcm untuk mengirim pesan. Semua penyedia Push dapat mengirim dan menerima pesan serta peristiwa ke akun Firebase menggunakan Push web. Meskipun ini masih merupakan Chrome Extension API yang didukung sepenuhnya, praktik terbaiknya adalah lebih memilih standar web seperti Push API daripada standar khusus ekstensi seperti ini. Jika kasus penggunaan Anda paling baik dilayani dengan chrome.gcm, ada panduan mendetail tentang cara menyiapkan chrome.gcm dari awal.

Pesan real-time dengan WebSockets

WebSockets telah menjadi dasar pesan real-time di web selama lebih dari satu dekade. WebSockets telah menjadi opsi pilihan untuk peristiwa real-time di web, yang menyediakan percakapan dua arah yang berkelanjutan. WebSockets berfungsi dalam berbagai komponen ekstensi, baik skrip konten, pop-up, panel samping, maupun pekerja layanan latar belakang. Meskipun soket web adalah opsi yang bagus di web secara umum, soket web memiliki beberapa batasan dengan ekstensi yang perlu Anda ingat jika Anda berencana menggunakannya.

Tidak cocok untuk notifikasi push

Karena WebSockets berjalan di platform web, bukan menggunakan API platform ekstensi seperti chrome.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 ekstensi tidak ditutup sebelum waktunya, Anda dapat mengirim pesan heartbeat untuk mempertahankan koneksi. Hal ini melibatkan pengiriman pesan berkala ke server, sehingga server dan Chrome mengetahui bahwa Anda masih aktif. Contoh cara mempertahankan a WebSocket agar tetap aktif tanpa batas waktu tersedia di dokumentasi WebSocket kami.