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

Installer LineageOS sur son appareil Android

 -  25 juin - 

Lorsque j’ai installé LineageOS sur mon smartphone, j’ai suivi des tutoriels sans réellement comprendre ce que je faisais. Je voulais donc écrire (...)


Firefox 67.0.1 : version mineure ou majeure ?

 -  23 juin - 

La version 67.0.1 de Firefox a été publiée le 4 juin 2019. De manière un peu étrange et inhabituelle, Mozilla a lancé une nouvelle fonctionnalité à (...)


L’enjeu de la bataille du Libre : la réappropriation des savoir‐faire

 -  22 juin - 

« Leur terre est morte et ils ne la possèdent même plus, ils sont endettés auprès de banques. Il faut des engrais sinon rien ne pousse. Les graines (...)


Un ASIC conçu intégralement avec des logiciels libres

 -  17 juin - 

Un ASIC (application‐specific integrated circuit, en anglais) est un circuit intégré d’électronique numérique conçu pour une application spécifique et (...)


Interview de Bastien Guerry, référent logiciels libres à la DINSIC

 -  9 juin - 

Bastien Guerry est, depuis décembre 2018, le référent logiciels libres de la DINSIC (Direction interministérielle du Numérique et du Système (...)