Mises à jour en temps réel dans les extensions

Les mises à jour en temps réel permettent de communiquer instantanément depuis vos serveurs directement vers les installations de vos extensions. Vous pouvez envoyer et recevoir des données à mesure que des événements se produisent. Que vous l'utilisiez pour la messagerie instantanée, pour déclencher des tâches en arrière-plan ou pour synchroniser les données de l'appareil, il s'agit d'une opération essentielle pour de nombreux services modernes. Il existe plusieurs options pour communiquer en temps réel dans les extensions Chrome.

  • Web Push, ou l'API Push, est une norme Web qui vous permet d'envoyer et de recevoir des messages dans une extension Chrome depuis n'importe quel fournisseur Push, ou même avec votre propre serveur Web.
  • browser.gcm est une ancienne API spécifique aux extensions qui vous permet d'envoyer et de recevoir des messages à l'aide de Firebase Cloud Messaging.
  • WebSockets est un protocole de bas niveau qui vous permet d'ouvrir une connexion bidirectionnelle entre votre extension Chrome et votre serveur.

Scénarios courants

Voici quelques scénarios courants dans les extensions Chrome où la communication en temps réel est essentielle :

Tenez les utilisateurs informés des changements.

Si vous synchronisez des fichiers, des paramètres ou d'autres informations entre plusieurs utilisateurs, la technologie Web Push est idéale pour envoyer des mises à jour silencieuses à votre extension et lui indiquer de mettre à jour l'état à partir du serveur.

Permettez-vous aux utilisateurs de signaler des bugs ou des problèmes ? Vous pouvez intégrer un fournisseur de notifications push pour l'informer dès que vous avez une mise à jour à partager, directement dans votre extension.

Envoyez des notifications aux utilisateurs.

Bien que vous puissiez envoyer des notifications entièrement côté client, si vous avez une logique côté serveur pour déterminer à qui, quoi, où ou quand envoyer une notification, Web Push est l'option la plus pérenne.

Si vous souhaitez envoyer des messages à un sous-ensemble d'utilisateurs, les notifications push sont le meilleur choix. Bien que Firebase Cloud Messaging propose des sujets (également appelés canaux), ils ne sont disponibles que dans leur API HTTP Cloud Messaging. Cette version est différente de l'ancienne version utilisée par browser.gcm. Si vous souhaitez envoyer des messages généraux à tous les utilisateurs, y compris ceux qui utilisent d'anciennes versions de Chrome (avant Chrome 121), browser.gcm est l'option idéale. browser.gcm, qui repose sur les anciennes API de messagerie Firebase, est compatible avec Chrome depuis plus de dix ans.

Vous pouvez utiliser les notifications push Web ou browser.gcm pour envoyer des notifications aux utilisateurs lorsqu'un événement important se produit dans leur compte, par exemple lorsqu'un nouveau message arrive ou qu'un fichier est partagé.

Messagerie instantanée

Vous avez besoin d'une communication bidirectionnelle fréquente ? Dans ce cas, un socket Web peut être la meilleure option pour vous. Il ouvre une connexion bidirectionnelle entre votre extension et votre serveur (ou même directement à d'autres utilisateurs). Il vous permet d'échanger des données et des messages en temps réel. Bien qu'elles soient une excellente option sur le Web en général, elles présentent certaines limites avec les extensions que vous devez garder à l'esprit si vous prévoyez de les utiliser.

Dans le reste de ce guide, nous examinerons de plus près les options disponibles.

Notifications push avec l'API Push

L'API Push vous permet d'utiliser n'importe quel fournisseur de notifications push pour envoyer des notifications et des messages push. Une notification push de l'API Push sera traitée par votre service worker dès sa réception. Si l'extension a été suspendue, une notification Push la réactivera. Le processus d'utilisation dans les extensions est exactement le même que celui utilisé sur le Web ouvert.

Notifications push avec browser.gcm

L'API browser.gcm fournit une connexion directe à Firebase Cloud Messaging (FCM), un service permettant d'envoyer des informations en temps réel aux applications Web et mobiles. Il s'agit d'une API d'extension spécifique à Chrome qui a été ajoutée de nombreuses années avant que Push ne soit disponible dans les navigateurs. Elle a été créée à l'aide des anciennes API HTTP de Firebase (désormais obsolètes). Bien que ces API soient obsolètes ailleurs, elles ne le sont pas dans les extensions. Elles continueront de fonctionner dans un avenir prévisible. Cependant, comme il s'agit de l'ancien backend de notifications push, il manque des fonctionnalités telles que les sujets.

Bien qu'un service de backend FCM soit une exigence stricte pour que les notifications parviennent aux utilisateurs dans Chrome, vous n'avez pas besoin d'utiliser browser.gcm pour envoyer des messages. Tous les fournisseurs Push peuvent envoyer et recevoir des messages et des événements vers un compte Firebase à l'aide du service Web Push. Bien qu'il s'agisse toujours d'une API d'extension Chrome entièrement compatible, il est recommandé de privilégier les normes Web telles que l'API Push aux API spécifiques aux extensions comme celle-ci. Si votre cas d'utilisation est mieux adapté à browser.gcm, vous trouverez un tutoriel détaillé sur la configuration de browser.gcm à partir de zéro.

Messages en temps réel avec WebSockets

Les WebSockets sont un élément essentiel de la messagerie en temps réel sur le Web depuis plus de dix ans. Elles sont devenues l'option de référence pour les événements en temps réel sur le Web, car elles permettent une conversation continue et bidirectionnelle. Les WebSockets fonctionnent dans divers composants d'extension, qu'il s'agisse de scripts de contenu, de pop-ups, de panneaux latéraux ou de service workers en arrière-plan. Bien qu'elles soient une excellente option sur le Web en général, elles présentent certaines limites avec les extensions que vous devez garder à l'esprit si vous prévoyez de les utiliser.

Ne convient pas aux notifications push

Étant donné que les WebSockets s'exécutent sur la plate-forme Web, plutôt que d'utiliser une API de plate-forme d'extension comme browser.gcm, Chrome n'a aucun moyen d'activer votre extension lorsqu'une connexion WebSocket est établie en dehors de votre extension.

Connexions actives uniquement

Chrome suspend les extensions qui ne sont pas utilisées au bout de 30 secondes. Chrome utilise un certain nombre d'heuristiques pour déterminer si l'extension est "utilisée", dont une connexion WebSocket active. Chrome ne suspend pas une extension qui a envoyé ou reçu un message WebSocket au cours des 30 dernières secondes. Si vous utilisez des WebSockets dans votre extension et que vous devez vous assurer qu'ils ne sont pas fermés prématurément, vous pouvez envoyer un message heartbeat pour maintenir la connexion. Cela implique d'envoyer des messages périodiques au serveur pour lui indiquer, ainsi qu'à Chrome, que vous êtes toujours actif. Vous trouverez un exemple de la façon de maintenir une connexion WebSocket indéfiniment dans notre documentation WebSocket.