Aggiornamenti in tempo reale nelle estensioni

Gli aggiornamenti in tempo reale forniscono un percorso di comunicazione istantaneo dai tuoi server direttamente alle installazioni delle tue estensioni. Puoi inviare e ricevere dati man mano che si verificano gli eventi. Che tu lo utilizzi per la messaggistica istantanea, per attivare attività in background o per sincronizzare i dati sul dispositivo, si tratta di un'operazione fondamentale per molti servizi moderni. Esistono diverse opzioni per la comunicazione in tempo reale nelle estensioni di Chrome.

  • Web Push o Push API è uno standard web che ti consente di inviare e ricevere messaggi in un'estensione di Chrome da qualsiasi fornitore di push o anche con il tuo server web.
  • browser.gcm è un'API specifica per le estensioni legacy che ti consente di inviare e ricevere messaggi utilizzando Firebase Cloud Messaging.
  • WebSockets è un protocollo di basso livello che consente di aprire una connessione bidirezionale tra l'estensione di Chrome e il server.

Scenari comuni

Di seguito sono riportati alcuni scenari comuni nelle estensioni di Chrome in cui la comunicazione in tempo reale è fondamentale:

Tieni gli utenti aggiornati sulle modifiche.

Se sincronizzi file, impostazioni o altre informazioni tra più utenti, la messaggistica push sul web è il modo perfetto per inviare aggiornamenti silenziosi alla tua estensione per comunicarle di aggiornare lo stato dal server.

Consenti agli utenti di segnalare bug o problemi? Puoi eseguire l'integrazione con un provider di push per comunicare non appena hai un aggiornamento da condividere, direttamente nell'estensione.

Invia notifiche agli utenti.

Anche se puoi inviare notifiche completamente lato client, se hai una logica lato server per chi, cosa, dove o quando inviare una notifica, allora Web Push è l'opzione più a prova di futuro.

Se vuoi inviare messaggi solo a un sottoinsieme di utenti, Push è la scelta migliore. Sebbene Firebase Cloud Messaging offra argomenti (noti anche come canali), questi sono disponibili solo nella sua API HTTP Cloud Messaging. È diversa dalla versione precedente utilizzata da browser.gcm. Se vuoi inviare messaggi di trasmissione a tutti gli utenti, inclusi quelli che utilizzano versioni precedenti di Chrome (pre Chrome 121), browser.gcm è l'opzione ideale. Basato sulle API di messaggistica Legacy Firebase, browser.gcm è supportato in Chrome da oltre un decennio.

Puoi utilizzare le notifiche push web o browser.gcm per inviare notifiche agli utenti quando si verifica qualcosa di importante per il loro account, ad esempio quando arriva un nuovo messaggio o quando viene condiviso un file.

Messaggistica istantanea

Hai bisogno di una comunicazione bidirezionale frequente? In questo caso, un web socket potrebbe essere l'opzione migliore per te. Si apre una connessione bidirezionale tra l'estensione e il server (o anche direttamente con altri utenti). Consente di scambiare dati e messaggi in tempo reale. Sebbene siano un'ottima opzione sul web in generale, presentano alcune limitazioni con le estensioni che devi tenere presenti se prevedi di utilizzarle.

Nel resto di questa guida esamineremo più da vicino le opzioni disponibili.

Notifiche push con l'API Push

Utilizzando l'API Push, puoi utilizzare qualsiasi provider push per inviare notifiche e messaggi push. Una notifica push dell'API Push verrà elaborata dal service worker non appena viene ricevuta. Se l'estensione è stata sospesa, un push la riattiverà. La procedura per utilizzarlo nelle estensioni è esattamente la stessa che useresti sul web aperto.

Notifiche push con browser.gcm

L'API browser.gcm fornisce una connessione diretta a Firebase Cloud Messaging (FCM), un servizio per l'invio di aggiornamenti in tempo reale ad applicazioni web e app mobile. Si tratta di un'API di estensione specifica di Chrome aggiunta molti anni prima che Push fosse disponibile nei browser. È stata creata utilizzando le API HTTP legacy di Firebase (ora deprecate). Sebbene queste API siano deprecate altrove, non sono deprecate nelle estensioni. Continueranno a funzionare nel prossimo futuro. Tuttavia, essendo il backend push legacy, non dispone di funzionalità come Topics.

Sebbene un servizio di backend FCM sia un requisito fondamentale per consentire alle notifiche di raggiungere gli utenti in Chrome, non è necessario utilizzare browser.gcm per inviare messaggi. Tutti i provider Push sono in grado di inviare e ricevere messaggi ed eventi a un account Firebase utilizzando le notifiche push web. Sebbene questa sia ancora un'API Chrome Extension completamente supportata, la best practice è preferire gli standard web come l'API Push a quelli specifici per le estensioni come questo. Se il tuo caso d'uso è meglio servito con browser.gcm, esiste una guida dettagliata su come configurare browser.gcm da zero.

Messaggi in tempo reale con WebSocket

WebSockets sono stati un punto fermo della messaggistica in tempo reale sul web per oltre un decennio. Sono sempre stati l'opzione preferita per gli eventi in tempo reale sul web, in quanto forniscono una conversazione continua e bidirezionale. I WebSocket funzionano in una serie di componenti di estensione, che si tratti di script di contenuti, popup, riquadri laterali o service worker in background. Sebbene siano un'ottima opzione sul web in generale, presentano alcune limitazioni con le estensioni che devi tenere presenti se prevedi di utilizzarle.

Non ideale per le notifiche push

Poiché i WebSocket vengono eseguiti nella piattaforma web, anziché utilizzare un'API della piattaforma di estensione come browser.gcm, Chrome non può attivare l'estensione quando viene avviata una connessione WebSocket al di fuori dell'estensione.

Solo connessioni attive

Chrome sospende le estensioni che non vengono utilizzate dopo 30 secondi. Una serie di euristiche contribuiscono a determinare se l'estensione è "in uso" in Chrome, una delle quali è una connessione WebSocket attiva. Chrome non sospende un'estensione che ha inviato o ricevuto un messaggio WebSocket negli ultimi 30 secondi. Se utilizzi WebSocket nella tua estensione e devi assicurarti che non venga chiuso prematuramente, puoi inviare un messaggio di heartbeat per mantenere la connessione. Ciò comporta l'invio di messaggi periodici al server, comunicando sia a quest'ultimo che a Chrome che sei ancora attivo. Un esempio di come mantenere una connessione WebSocket attiva a tempo indeterminato è disponibile nella nostra documentazione WebSocket.