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
- Add
use_existing_consumeroption for NATS async consumer by @b43 #1074. This allows using existing pre-created consumer and not rely on Centrifugo options to create one. - New
publication_data_formatchannel global and namespace option #1085. - Support for grpc
static_metadata(seegrpcobject), tweak httpstatic_headersbehaviour to match the doc #1076 - Better performance. Eliminate allocations under active batching scenario coming from Prometheus metrics. See centrifugal/centrifuge#530
- Better performance. Redis key build optimizations centrifugal/centrifuge#534
- New example. Centrifugo Delta Compression Example - demonstrates usage of Delta compression in channels. Just
docker compose upand open http://localhost:8080
Fixes
- This release addresses #1083 by introducing
publication_data_formatmentioned above.
Miscellaneous
- This release is built with Go 1.25.5.
- Updated dependencies.
- See also the corresponding Centrifugo PRO release.