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

Directive droit d’auteur : bientôt la dernière ligne droite pour enterrer un texte liberticide

 -  20 janvier - 

Le 21 janvier 2019 sera une date importante pour l’avenir du projet de directive sur le droit d’auteur, celle du dernier trilogue qui doit aboutir (...)


Démystifier l’activité d’hébergeur

 -  13 janvier - 

Les Chatons (membres du Collectif des Hébergeurs Alternatifs, Transparents, Ouverts Neutres et Solidaires) veulent sauver Internet en proposant (...)


Illico Editor : rétrospective 2017-2018

 -  8 janvier - 

En quelques mots, Illico Editor est un couteau suisse de la qualification de données qui : s’adresse à tous et à toutes (pas uniquement à des experts (...)


Sortie de Gambas 3.12

 -  4 janvier - 

Gambas est un langage de programmation orienté objet, basé sur un interpréteur BASIC, et une plate‐forme de développement complète comportant, entre (...)


darktable 2.6.0

 -  4 janvier - 

darktable est un logiciel de retouche d’images spécialisé dans le traitement de photos « raw », c’est‐à‐dire des données brutes du capteur de l’appareil (...)