A protocol and server for pushing real-time updates to web browsers and HTTP clients with server-sent events.
Mercure is a protocol and server implementation for pushing real-time data updates to web browsers and HTTP clients using Server-Sent Events (SSE). It solves the problem of efficiently delivering asynchronous and real-time updates from web APIs to reactive applications without the overhead of polling or complex WebSocket setups.
Developers building reactive web and mobile applications that need real-time updates from web APIs, especially those working with RESTful or GraphQL APIs who want to add live data capabilities.
Developers choose Mercure because it provides a standardized, battery-efficient, and easy-to-implement solution for real-time communications that integrates seamlessly with existing web APIs and avoids the complexity of WebSockets.
🪽 An open, easy, fast, reliable and battery-efficient solution for real-time communications
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses the established Server-Sent Events (SSE) web standard, ensuring broad browser compatibility and reducing dependency on proprietary solutions, as highlighted in the protocol specification.
Optimized for mobile devices by minimizing network activity and power consumption compared to polling or WebSockets, a key selling point in the README for real-time updates.
Enables real-time updates to be published directly from existing web APIs without altering their structure, ideal for enhancing RESTful or GraphQL services with live data.
Includes a robust reference implementation in Go with Docker support, making it deployment-ready for scalable environments, as noted in the production-grade hub description.
Based on SSE, it only supports server-to-client updates, which limits its use for applications requiring frequent client-initiated messages or full-duplex interaction.
The reference hub is licensed under AGPL, which can require open-sourcing derivative works and may deter commercial projects preferring more permissive licenses.
Requires setting up and maintaining a separate Mercure hub or integrating the Go library, adding complexity compared to simpler, embedded real-time solutions.