Mises à jour en temps réel dans les extensions

Les mises à jour en temps réel fournissent un chemin de communication instantané de vos serveurs directement à vos installations d'extensions. Vous pouvez envoyer et recevoir des données au fur et à mesure des événements. Que vous l'utilisiez pour la messagerie instantanée, le déclenchement de tâches en arrière-plan ou la synchronisation des données de l'appareil, il s'agit d'une opération essentielle avec un certain nombre de 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 à partir de n'importe quel fournisseur Push, ou même avec votre propre serveur Web.
  • chrome.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 :

Tenir les utilisateurs informés des modifications

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

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

Envoyer des notifications aux utilisateurs

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

Si vous n'envoyez des messages qu'à un sous-ensemble d'utilisateurs, Push est le meilleur choix. Bien que Firebase Cloud Messaging propose des sujets (également connus sous le nom de canaux), ils ne sont disponibles que dans son API HTTP Cloud Messaging. Cela diffère de l'ancienne version utilisée par chrome.gcm. Si vous souhaitez envoyer des messages généraux à tous les utilisateurs, y compris ceux qui utilisent d'anciennes versions de Chrome (antérieures à Chrome 121), chrome.gcm est l'option idéale. Basée sur les anciennes API de messagerie Firebase, chrome.gcm est compatible avec Chrome depuis plus de dix ans.

Vous pouvez utiliser Web Push ou chrome.gcm pour envoyer des notifications aux utilisateurs lorsqu'un événement important se produit sur 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 WebSocket 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'il s'agisse d'une excellente option sur le Web en général, il présente 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

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

Notifications push avec chrome.gcm

L'API chrome.gcm fournit une connexion directe à Firebase Cloud Messaging (FCM), un service permettant d'envoyer des mises à jour 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 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. Toutefois, comme il s'agit du backend push hérité, il ne dispose pas de fonctionnalités telles que les sujets.

Bien qu'un service de backend FCM soit une exigence stricte pour que les notifications atteignent les utilisateurs dans Chrome, vous n'avez pas besoin d'utiliser chrome.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 push Web. 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 normes spécifiques aux extensions comme celle-ci. Si votre cas d'utilisation est mieux adapté à chrome.gcm, vous trouverez des instructions détaillées sur la configuration de chrome.gcm à partir de zéro.

Messages en temps réel avec WebSockets

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

Peu adapté 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 chrome.gcm, Chrome n'a aucun moyen de réactiver votre extension lorsqu'une connexion WebSocket est lancée en dehors de votre extension.

Connexions actives uniquement

Chrome suspend les extensions qui ne sont pas utilisées au bout de 30 secondes. Un certain nombre d'heuristiques permettent à Chrome de déterminer si l'extension est "utilisée", l'une d'elles étant une connexion WebSocket active. Chrome ne suspendra 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'elle n'est pas fermée prématurément, vous pouvez envoyer un message de pulsation pour maintenir la connexion. Cela implique d'envoyer des messages périodiques au serveur, en lui indiquant ainsi qu'à Chrome que vous êtes toujours actif. Vous trouverez un exemple de la façon de maintenir un WebSocket actif indéfiniment dans notre documentation WebSocket.