- Solution ouverte, simple, rapide, stable et économe en batterie
- Envoie les mises à jour de données aux navigateurs web et autres clients HTTP
- Particulièrement utile pour afficher dans des applications web réactives et mobiles les mises à jour asynchrones/en temps réel de ressources exposées via une API web
- Basé uniquement sur HTTP : prend en charge la communication bidirectionnelle en s'appuyant sur des protocoles HTTP/2 ou supérieurs
- Temps de réponse rapide et faible latence
- Compatibilité navigateur dans tous les environnements, sans installation supplémentaire
- Publication et abonnement simples
- Publication (Publish) : via une simple requête POST
- Abonnement (Subscribe) : réception des mises à jour en temps réel via les Server-Sent Events (SSE)
- Prend en charge la reconnexion automatique en cas de coupure et la redemande des messages manqués
- Conçu pour les API RESTful et GraphQL
- Fournit des mises à jour privées via l’authentification JWT
- Fournit une Presence API permettant de vérifier l’état de connexion des utilisateurs. Possibilité de suivre l’état des abonnements et des événements
- Event store : permet de stocker et de gérer les événements survenus
- Compatible avec PHP et d’autres architectures serverless
- Fournit le chiffrement de bout en bout (E2EE) pour une sécurité complète des données
- Fournit une implémentation de référence de Mercure Hub prête pour la production
- Livré avec une bibliothèque et une image Docker officielle, utilisables pour implémenter directement le protocole Mercure sans hub dans toute application Go
2 commentaires
Je me demande si, comme c’est basé sur SSE, il s’agit d’une communication unidirectionnelle, ou si cela prend aussi en charge une communication bidirectionnelle comme les WebSocket ! 😮
Pour l’instant, d’après ce que j’ai trouvé de mon côté, ça semble ne prendre en charge que la communication unidirectionnelle (serveur -> client)... 🥺
https://medium.com/@sirajul.anik/…
FrankenPHP, créé par la même personne, intègre une implémentation de Mercure.
https://fr.news.hada.io/topic?id=15103
Il existe aussi Pushpin, qui peut être une alternative du point de vue de la fourniture d’un hub temps réel.
https://fr.news.hada.io/topic?id=11377
J’ai déjà utilisé Pushpin pour un side project parce que je le trouvais plus intuitif que Mercure (haha... j’avais vraiment trop la flemme de lire la documentation de Mercure), mais la prochaine fois, j’aimerais bien essayer celui-ci.