Greboca  

DLFP - Dépêches  -  Mercure : un nouveau protocole Web pour mettre à jour les navigateurs en temps réel (« push »)

 -  Novembre 2018 - 

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

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. 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 !

Le protocole a été conçu pour tirer parti des capacités hypermedia du Web. Il est un parfait complément des API Web du même nom. Il est auto‐découvrable (pour ce faire, il utilise la RFC « Web Linking »). Il est également compatible avec les « souscriptions » GraphQL.

Il dispose d’un mécanisme d’autorisation, permet la reconnexion 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 URI ».

Grâce à un système de hub, il fonctionne avec toutes les technologies serveur, même celles incapables de maintenir des connexions persistantes avec le client telles 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 JavaScript (ce qui vous évitera d’utiliser des bibliothèques vérolées). Note : IE et Edge nécessitent un Polyfill.

découverte
souscription

Le gestion du protocole a déjà été incluse dans les cadriciels Web Symfony (via ce bundle officiel) et dans la version de développement (master) de API Platform.

Mercure permet de créer ce type de choses :

La spécification, l’implémentation de référence et des exemples d’utilisation dans de nombreux langages (Go, Node, Python et PHP) sont disponibles sur le dépôt du projet (libre, sous licence AGPL).

Une présentation plus détaillée du projet est disponible en français sur le site de la société coopérative Les-Tilleuls.coop.

Commentaires : voir le flux atom ouvrir dans le navigateur

par Kévin Dunglas, ZeroHeure, Davy Defaud, Benoît Sibaud, Bruno Michel

DLFP - Dépêches

LinuxFr.org

dav1d is An AV1 Decoder

 -  16 mars - 

dav1d est une implémentation de décodeur d’AV1 destinée à un usage réel, en dehors du cadre du décodeur de référence libaom ; et un acronyme récursif. (...)


Un mois pour donner de la voix : « voter pour l’article 13, c’est attaquer nos libertés ! »

 -  13 mars - 

La directive droit d’auteur, et son liberticide article 13, devrait être soumise au vote des parlementaires européens réunis en séance plénière lors (...)


Sortie de Wireshark 3.0.0

 -  10 mars - 

Le 28 février 2019 est parue la version 3.0.0 de Wireshark, un logiciel libre d’analyse de paquets réseau (depuis plus de 20 ans). C’est un outil (...)


Sortie du noyau Linux 5.0

 -  7 mars - 

La sortie de la version stable 5.0 du noyau Linux a été annoncée le 4 mars 2019 par Linus Torvalds. Le nouveau noyau est, comme d’habitude, (...)


Collaboration laborieuse ? Si les symptômes persistent, installez Tracim 2.1 !

 -  23 février - 

Tracim est une solution collaborative libre pour le travail en équipe. Après la version 2.0 sortie dans un certain anonymat courant novembre, la (...)