Centrifugo is an open-source scalable real-time messaging server. Centrifugo can instantly deliver messages to application online users connected over supported transports (WebSocket, HTTP-streaming, Server-Sent Events (SSE/EventSource), GRPC, WebTransport). Centrifugo has the concept of a channel – so it's a user-facing PUB/SUB server.
Centrifugo is language-agnostic and can be used to build chat apps, live comments, multiplayer games, real-time data visualizations, collaborative tools, etc. in combination with any backend. It is well suited for modern architectures and allows decoupling the business logic from the real-time transport layer.
Several official client SDKs for browser and mobile development wrap the bidirectional protocol. In addition, Centrifugo supports a unidirectional approach for simple use cases with no SDK dependency.
For details, go to the Centrifugo documentation site.
What's changed
Improvements
- 🔥 Support for server-side publication filtering by tags. This is a major addition to the Centrifugal ecosystem, enabling more powerful data organization and filtering capabilities to reduce bandwidth usage and processing overhead. Client SDKs (at this point only
centrifuge-js
>= v5.5.0) can supply a filter when subscribing to a channel, and server will deliver only publications with tags matching the filter. See:- Channel publication filtering documentation chapter. Pay attention to the implementation notes – while powerful the feature should be used in proper situations, and it can not replace a proper channel design.
- Read the new post Publication filtering by tags - reducing bandwidth with server-side stream filtering in Centrifugal blog which uncovers design decisions behind this feature and demonstrates it in action.
- New supportive metric to see the count of publications dropped by tags filter
- Check out the new visuals on https://centrifugal.dev 🖲 🐱
Fixes
Miscellaneous
- This release is built with Go 1.25.3.
- Updated dependencies.
- See also the corresponding Centrifugo PRO release.