Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
API Push
Note : Cette fonctionnalité est disponible via lesWeb Workers.
L'APIPush permet aux applications web de recevoir des messages poussés depuis un serveur, que l'application soit active au premier plan, chargée, ou non. Ceci permet de fournir des notifications asynchrones et des alertes/mises à jour pour les personnes qui souhaitent en recevoir, créant l'opportunité d'être au courant rapidement.
Dans cet article
Concepts et usages de Push
Attention :Lorsqu'on implémente des abonnements viaPushManager, il est primordial de se protéger contre les attaques CSRF/XSRF. Pour plus d'informations, voir les articles suivants :
Pour qu'une application web puisse recevoir des messagespush, elle doit disposer d'unservice worker actif. Quand leservice worker est actif, on peut souscrire aux notificationspush en utilisantPushManager.subscribe().
Cet abonnement fournira un objetPushSubscription contenant toutes les informations dont l'application a besoin pour transmettre un messagepush : un point de terminaison et la clé de chiffrement nécessaire à l'envoi des données.
Leservice worker sera alors démarré pour réceptionner les messagespush via le gestionnaire d'évènementonpush. Ainsi, l'application peut réagir aux messagespush reçus, par exemple en affichant une notification avecServiceWorkerRegistration.showNotification().
Chaque abonnement est propre à unservice worker. Le point d'accès correspondant pour l'abonnement est uneURL fonctionnelle (capability URL) unique. Il suffit de connaître ce point d'accès pour envoyer un message à votre application. L'URL du point d'accès doit donc rester secrète, afin d'éviter que d'autres applications puissent envoyer des messagespush vers votre application.
L'activation d'unservice worker nécessaire à la réception du messagepush peut accroître l'utilisation des ressources, particulièrement de la batterie. Chaque navigateur adopte une stratégie différente pour gérer cette consommation, sans qu'il y ait actuellement de mécanisme standard. Firefox impose un quota de messagespush pouvant être envoyés à une application (cependant, les messagespush utilisés pour les notifications sont exempts de cette limite). Le quota est réinitialisé à chaque visite sur le site. Chrome n'impose pas de limite particulière.
Interfaces
PushEventReprésente une actionpush envoyée àla portée globale d'un
ServiceWorker. Elle contient les informations envoyées depuis le serveur d'application vers l'objetPushSubscriptionresponsable du traitement.PushManagerPermet de recevoir des notifications de serveurs tiers et de demander les URL pour les notificationspush.
PushMessageDataFournit l'accès aux données transmises par le serveur, incluant des méthodes pour manipuler les données reçues.
PushSubscriptionFournit l'URL de l'abonnement au point d'accès et permet également le désabonnement.
PushSubscriptionOptionsReprésente les options associées à l'abonnement.
Ajouts à l'APIService Worker
Les ajouts àl'APIService Worker suivants ont été spécifiés dans l'APIPush, pour fournir un point d'entrée à l'utilisation de messagesPush pour surveiller et répondre aux évènements de changement liés aux messagesPush et aux souscriptions.
ServiceWorkerRegistration.pushManagerLecture seuleFournit une référence à l'interface une référence de l'interface
PushManagerpermettant de gérer les abonnementspush (créer un nouvel abonnement, obtenir l'abonnement existant, connaître l'état des permissions, se désabonner). Il s'agit du point d'entrée vers l'APIPush.onpushUn gestionnaire d'événement déclenché à chaque évènement
push; c'est-à-dire à chaque messagepush reçu depuis le serveur.onpushsubscriptionchangeUn gestionnaire d'événement déclenché à chaque évènement
pushsubscriptionchange; par exemple, quand un abonnementpush a été invalidé, ou va l'être (par exemple, quand un servicepush définit une durée d'expiration).
Exemples
Le livre de recettes pour lesservice workers contient différents exemples d'utilisation de l'APIPush.
Spécifications
| Specification |
|---|
| Push API> # pushevent-interface> |
| Push API> # pushmessagedata-interface> |