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 quando si verificano eventi. Sia che la utilizzi per la messaggistica immediata, per l'attivazione di attività in background o per la sincronizzazione dei dati del dispositivo, si tratta di un'operazione fondamentale con una serie di servizi moderni. Esistono diverse opzioni per comunicare in tempo reale nelle estensioni di Chrome.

  • Web Push, o API Push, è uno standard web che consente di inviare e ricevere messaggi in un'estensione di Chrome da qualsiasi provider push o anche dal tuo server web.
  • chrome.gcm è un'API specifica delle estensioni legacy che 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 Chrome e il tuo server.

Scenari comuni

Ecco alcuni scenari comuni nelle estensioni di Chrome in cui la comunicazione in tempo reale è fondamentale:

Mantieni gli utenti aggiornati con le modifiche.

Se stai sincronizzando file, impostazioni o altre informazioni tra più utenti, Web Push è il modo ideale per inviare aggiornamenti silenziosi alla tua estensione per comunicarle di aggiornare lo stato dal server.

Stai consentendo agli utenti di segnalare bug o problemi? Puoi eseguire l'integrazione con un provider push per informarlo non appena ci sono aggiornamenti da condividere, direttamente nell'estensione.

Inviare notifiche agli utenti.

Anche se puoi inviare notifiche completamente lato client, se disponi di una logica lato server per chi, cosa, dove o quando inviare una notifica, il push web è l'opzione più efficace per il futuro.

Per l'invio di messaggi solo a un sottoinsieme di utenti, il push è la scelta migliore. Sebbene Firebase Cloud Messaging offra Topics (noti anche come canali), è disponibile solo nell'API HTTP Cloud Messaging. È diversa dalla versione precedente utilizzata da chrome.gcm. Se vuoi inviare messaggi generici a tutti gli utenti, inclusi quelli che utilizzano versioni legacy di Chrome (precedenti a Chrome 121), l'opzione chrome.gcm è l'opzione ideale. Basato sulle API di messaggistica legacy di Firebase, chrome.gcm è supportato in Chrome da oltre un decennio.

Puoi utilizzare Web Push o chrome.gcm per inviare notifiche agli utenti quando succede 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 comunicazioni frequenti e bidirezionali? Quindi un socket web potrebbe essere l'opzione migliore. Consente di aprire 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 relative alle estensioni che devi tenere a mente se pensi 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 push e messaggi. Un push dall'API Push verrà elaborato dal tuo service worker non appena viene ricevuto. Se l'estensione è stata sospesa, un push la riattiva. La procedura per utilizzarla nelle estensioni è esattamente la stessa che useresti sul web aperto.

Notifiche push con chrome.gcm

L'API chrome.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 per Chrome che è stata aggiunta molti anni prima che Push fosse disponibile nei browser. È stato creato utilizzando le API HTTP legacy di Firebase (ora deprecate). Anche se queste API sono deprecate altrove, non sono deprecate nelle estensioni. che continueranno a funzionare nel prossimo futuro. Tuttavia, poiché si tratta del backend push precedente, non dispone di funzionalità come Topics.

Anche se un servizio di backend FCM è un requisito fondamentale per inviare notifiche agli utenti in Chrome, non è necessario utilizzare chrome.gcm per inviare messaggi. Tutti i provider push possono inviare e ricevere messaggi ed eventi a un account Firebase utilizzando la modalità push web. Anche se si tratta ancora di un'API Chrome Extension completamente supportata, è buona norma preferire gli standard web come l'API Push a quelli specifici delle estensioni come questo. Se il tuo caso d'uso è indicato al meglio con chrome.gcm, puoi consultare le istruzioni dettagliate su come configurare chrome.gcm da zero.

Messaggi in tempo reale con WebSocket

I WebSockets rappresentano una pietra miliare della messaggistica in tempo reale sul Web da oltre un decennio. Sono stati la scelta ideale per gli eventi in tempo reale sul web, offrendo una conversazione continua e bidirezionale. I WebSocket funzionano in vari componenti di estensioni, come script del contenuto, popup, pannelli laterali e service worker in background. Sebbene siano un'ottima opzione sul web in generale, hanno alcune limitazioni relative alle estensioni che devi tenere a mente se pensi di usarle.

Non ideale per le notifiche push

Poiché i WebSocket vengono eseguiti sulla piattaforma web, anziché utilizzare un'API della piattaforma di estensione come chrome.gcm, Chrome non ha modo di riattivare l'estensione quando viene avviata una connessione WebSocket all'esterno dell'estensione.

Solo connessioni attive

Chrome sospende le estensioni che non vengono utilizzate dopo 30 secondi. In Chrome vengono utilizzate varie euristiche per determinare se l'estensione è "in uso", una delle quali è una connessione WebSocket attiva. Chrome non sospenderà 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 heartbeat per mantenere la connessione. Ciò comporta l'invio di messaggi periodici al server, che comunicano a quest'ultimo e a Chrome che sei ancora attivo. Un esempio di come mantenere attivo un websocket in modo permanente è disponibile nella documentazione di WebSocket.