URL: https://linuxfr.org/news/mercure-un-nouveau-protocole-web-pour-mettre-a-jour-les-navigateurs-en-temps-reel-push Title: Mercure : un nouveau protocole Web pour mettre à jour les navigateurs en temps réel (« push ») Authors: Kévin Dunglas ZeroHeure, Davy Defaud, Benoît Sibaud et Bruno Michel Date: 2018年11月27日T12:57:11+01:00 License: CC By-SA Tags: mercure Score: 55 J'ai récemment publié un nouveau protocole ouvert nommé Mercure, ainsi qu'une implémentation de référence écrite en Go. ![logo du projet mercure](https://raw.githubusercontent.com/dunglas/mercure/master/public/mercure.svg?sanitize=true) Mercure permet de "pousser" en temps réel des données depuis des serveurs vers des navigateurs web (ou autres clients HTTP). La spécification et l'implémentation [sont disponibles sur GitHub](https://mercure.rocks). Le projet peut être considéré comme un remplaçant de WebSocket (bien que le protocole soit de plus haut niveau) et des solutions propriétaires telles que Pusher. Contrairement à WebSocket, Mercure est compatible avec HTTP/2 et HTTP/3 (le nouveau venu annoncé la semaine dernière par l'IETF). Mercure est très jeune (bien que déjà utilisé par quelques projets en production). Tous les retours, critiques et autres revues seront très utiles ! ---- [Journal à l’origine de la dépêche](https://linuxfr.org/users/dunglas/journaux/mercure-un-nouveau-protocole-web-pour-mettre-a-jour-les-navigateurs-en-temps-reel-push) [Dépôt GitHub du projet](https://github.com/dunglas/mercure) [Présentation complète avec exemples](https://les-tilleuls.coop/fr/blog/article/mercure-un-protocole-pour-pousser-des-mises-a-jour-vers-des-navigateurs-et-app-mobiles-en-temps-reel) ---- Le protocole a été conçu pour tirer parti des capacités hypermedia du web. Il est un parfait complément [des APIs web du même nom](https://en.wikipedia.org/wiki/HATEOAS). Il est auto-découvrable (pour ce faire, il utilise [la RFC "Web Linking"](https://tools.ietf.org/html/rfc5988)). Il est également compatible avec les "souscriptions" [GraphQL](https://graphql.org/). Il dispose d'un mécanisme d'autorisation, permet la reconnection automatique du client en cas de coupure réseau et la récupération des messages ratés, permet de souscrire à plusieurs sujets (*topics*), et d'utiliser des *patterns* de sujets via les "templated URIs". Grâce à un système de hub, il fonctionne avec toutes les technologies serveur, même celles incapable de maintenir des connections persistantes avec le client tel que les architectures "serverless", PHP, ou les scripts (Fast)CGI. Et il supporte les fortes charges. Pour publier une mise à jour, une simple requête HTTP vers le hub suffit. Côté client, Mercure utilise uniquement les *Server-sent events* et le protocole HTTP, de ce fait il est compatible avec tous les navigateurs modernes (jusqu'à IE 7), passe les pare-feux et ne nécessite aucune dépendance JS (ce que vous évitera d'utiliser [des bibliothèques vérolées](https://linuxfr.org/users/nono/journaux/une-backdoor-vient-d-etre-trouvee-dans-un-paquet-npm-connu)). Note : IE et Edge nécessitent un [[Polyfill]]. ![découverte](https://github.com/dunglas/mercure/raw/master/spec/discovery.png) ![souscription](https://github.com/dunglas/mercure/raw/master/spec/subscriptions.png) Le support du protocole à déjà été inclut dans les frameworks web [Symfony](https://symfony.com) (via [ce bundle officiel](https://github.com/symfony/mercure-bundle)) et dans la version de développement (*master*) de [API Platform](https://api-platform.com). Mercure permet de créer ce type de choses : * [une application de chat app en 25 lignes de Python et 35 de JS]( https://github.com/dunglas/mercure/pull/32) * [synchronisation en temps réel d'une Progressive Web App et d'une app mobile React Native](https://github.com/api-platform/client-generator/pull/94) La spec, l'implémentation de référence et des exemples d'utilisation dans de nombreux languages (Go, Node, Python, PHP) sont disponible [sur le dépôt du projet](https://mercure.rocks) (libre, sous licence AGPL). Une présentation plus détaillée du projet est [disponible en français](https://les-tilleuls.coop/fr/blog/article/mercure-un-protocole-pour-pousser-des-mises-a-jour-vers-des-navigateurs-et-app-mobiles-en-temps-reel) sur le site de la société coopérative [Les-Tilleuls.coop](https://les-tilleuls.coop).

AltStyle によって変換されたページ (->オリジナル) /