Mises à jour en temps réel dans les extensions

Les mises à jour en temps réel fournissent un chemin de communication instantané depuis vos serveurs directement vers 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 de l'appareil, il s'agit d'une opération critique avec un certain nombre de services modernes. Il existe de nombreuses options pour communiquer en temps réel dans les extensions Chrome.

  • Web Push (API Push) est une norme Web qui vous permet d'envoyer et de recevoir des messages dans des extensions Chrome depuis 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'établir une connexion bidirectionnelle entre votre extension Chrome et votre serveur.

Scénarios courants

Voici quelques scénarios courants dans les extensions Chrome pour lesquels une 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 de 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.

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

Pour envoyer des messages à un seul sous-ensemble d'utilisateurs, le mode Push est le meilleur choix. Bien que Firebase Cloud Messaging propose des thèmes Topics (également appelés canaux), il n'est disponible que dans l'API HTTP Cloud Messaging. Elle est différente de l'ancienne version utilisée par chrome.gcm. Si vous souhaitez envoyer des messages généraux à tous les utilisateurs, y compris ceux des 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 lorsque quelque chose d'important pour leur compte se produit, par exemple lorsqu'un nouveau message arrive ou lorsqu'un fichier est partagé.

Messagerie instantanée

Vous avez besoin d'une communication fréquente à double sens ? 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 avec d'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 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'aide de l'API Push, vous pouvez utiliser n'importe quel fournisseur push pour envoyer des notifications et des messages push. Une transmission depuis l'API Push sera traitée par votre service worker dès sa réception. Si l'extension a été suspendue, une push la réactive. La procédure à suivre dans les extensions est exactement la même que celle que vous utiliserez 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 aux applications mobiles. Il s'agit d'une API d'extension spécifique à Chrome qui a été ajoutée plusieurs années avant que l'option 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 le sont pas dans les extensions. Elle continuera à fonctionner dans un avenir proche. Cependant, comme il s'agit de l'ancien backend push, il lui manque des fonctionnalités telles que Topics.

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 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 service Web push. Bien qu'il s'agisse toujours d'une API Chrome Extension entièrement compatible, il est recommandé de privilégier les normes Web telles que l'API Push à celles spécifiques aux extensions, comme celle-ci. Si chrome.gcm est mieux adapté à votre cas d'utilisation, il existe un guide détaillé qui vous explique comment le configurer à 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. Il s'agit de l'option privilégiée pour les événements en temps réel sur le Web, permettant ainsi une conversation continue et bidirectionnelle. Les WebSockets fonctionnent avec plusieurs composants d'extension, qu'il s'agisse de scripts de contenu, de pop-ups, de panneaux latéraux ou de service workers d'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.

Pas idéal pour les 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 telle que chrome.gcm, Chrome n'a aucun moyen de réactiver votre extension lorsqu'une connexion WebSocket est démarré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 sont utilisées dans Chrome 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'il n'est pas fermé prématurément, vous pouvez envoyer un message heartbeat pour maintenir la connexion. Cela implique l'envoi de messages périodiques au serveur, pour indiquer à Chrome et à celui-ci que vous êtes toujours actif. Vous trouverez un exemple illustrant comment maintenir actif un Websocket indéfiniment dans la documentation WebSocket.