Mises à jour en temps réel dans les extensions

Les mises à jour en temps réel fournissent un chemin de communication instantané entre vos serveurs et vos installations d'extensions. Vous pouvez envoyer et recevoir des données au fur et à mesure que des événements se produisent. 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 d'un appareil, il s'agit d'une opération critique avec un certain nombre de services modernes. Il existe plusieurs options pour communiquer en temps réel dans les extensions Chrome.

  • Web Push (ou 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.
  • chrome.gcm est une ancienne API spécifique à une extension 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'établir une connexion bidirectionnelle entre votre extension Chrome et votre serveur.

Scénarios courants

Voici quelques situations courantes dans les extensions Chrome, où la communication en temps réel est essentielle:

Tenez 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 qu'elle doit mettre à jour l'état à partir du serveur.

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

Envoyez des notifications aux utilisateurs.

Vous pouvez envoyer des notifications entièrement côté client, mais si vous disposez d'une logique côté serveur pour qui, quoi, où et quand envoyer une notification, Web Push est l'option la plus pérenne.

Pour envoyer des messages à un sous-ensemble d'utilisateurs uniquement, le mode Push est la meilleure option. Bien que Firebase Cloud Messaging propose des Topics (également appelés canaux), il n'est disponible que dans leur API HTTP Cloud Messaging. Elle est différente de l'ancienne version utilisée par chrome.gcm. Si vous souhaitez envoyer des messages larges à tous les utilisateurs, y compris ceux d'anciennes versions de Chrome (antérieures à Chrome 121), chrome.gcm est l'option idéale. Basé sur les anciennes API de messagerie Firebase, chrome.gcm est compatible avec Chrome depuis plus de 10 ans.

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

Messagerie instantanée

Vous avez besoin d'une communication fréquente et bidirectionnelle ? Un WebSocket peut alors être la meilleure option pour vous. Elle ouvre une connexion bidirectionnelle entre votre extension et votre serveur (ou même directement avec les autres utilisateurs). Il vous permet d'échanger des données et des messages en temps réel. Bien qu'elles constituent 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 la suite de ce guide, nous examinerons de plus près les options disponibles.

Notifications push avec l'API Push

L'API Push vous permet d'envoyer des notifications push et des messages à l'aide de n'importe quel fournisseur push. Une requête push de l'API Push sera traitée par votre service worker dès sa réception. Si l'extension a été suspendue, un push la réactivera. Le processus pour l'utiliser dans les extensions est exactement le même que 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 ajoutée plusieurs années avant que la fonction Push ne soit disponible dans les navigateurs. Il a été créé à l'aide des anciennes API HTTP de Firebase (désormais obsolètes). Bien que ces API soient obsolètes ailleurs, elles ne sont pas obsolètes dans les extensions. Ils continueront à travailler dans un avenir proche. Cependant, comme il s'agit de l'ancien backend push, il ne comporte pas de fonctionnalités telles que Topics.

Bien qu'un service de backend FCM soit obligatoire 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 mode push Web. Bien qu'il s'agisse encore 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 chrome.gcm convient mieux à votre cas d'utilisation, consultez ce guide d'utilisation détaillé pour apprendre à configurer chrome.gcm à partir de zéro.

Messages en temps réel avec WebSockets

Les WebSockets sont la pierre angulaire de la messagerie en temps réel sur le Web depuis plus de 10 ans. Ils constituaient l'outil privilégié pour les événements en temps réel sur le Web, permettant ainsi une conversation continue et bidirectionnelle. Les WebSockets sont compatibles avec différents 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 constituent 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

Les WebSockets s'exécutent sur la plate-forme Web au lieu d'utiliser une API de plate-forme d'extensions telle que chrome.gcm. Chrome n'a aucun moyen d'activer votre extension lorsqu'une connexion WebSocket est lancée en dehors de celle-ci.

Connexions actives uniquement

Chrome suspend les extensions qui ne sont pas utilisées au bout de 30 secondes. Un certain nombre d'heuristiques sont intégrées à Chrome pour déterminer si l'extension est "en cours d'utilisation", l'une d'entre elles étant une connexion WebSocket active. Chrome ne suspend pas les extensions qui ont envoyé ou reçu un message WebSocket au cours des 30 dernières secondes. Si vous utilisez WebSockets dans votre extension et que vous devez vous assurer qu'il n'est pas fermé prématurément, vous pouvez envoyer un message heartbeat pour maintenir la connexion. Cette opération implique l'envoi de messages périodiques au serveur, informant le serveur et Chrome que vous êtes toujours actif. Un exemple montrant comment maintenir un Websocket actif indéfiniment est disponible dans notre documentation WebSocket.