JUL6ART
🇬🇧 EN
Retour au blog
28 April 2026

Mercure: real-time collaboration without WebSockets

One annotation, every mutation broadcasts a patch. DataTables and detail screens refresh themselves.

Collaboration temps réel

Real-time in a web application long meant: dedicated WebSocket server, parallel deployment, client-side state management. Mercure replaces all of that with standard HTTP/2: the server publishes on topics, clients subscribe via SSE, and the hub handles multiplexing.

On Jul6art the pattern is even simpler. The attribute #[BroadcastableEntity(changedFields: ['title', 'status'])] on a Doctrine entity triggers, on every flush, the publication of a patch to a private topic scoped to the organization. Stimulus components on the backoffice listen and refresh:

  • DataTables auto-refresh the touched row without reloading the page.
  • Detail screens show a "this record was just updated" toast and offer a reload.
  • The notification bell increments without polling.

All of this without a single line of glue in your business code. Add the attribute, restart Mercure, you're live.