Releases: centrifugal/centrifugo
v5.0.3
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, SSE/EventSource, GRPC, SockJS, 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 support for GRPC exporter protocol in opentelemetry tracing, by @SinimaWath in #691. Can be enabled by setting
OTEL_EXPORTER_OTLP_PROTOCOL
environment variable, see updated doc
Misc
- Release is built with Go 1.20.7
- Dependencies updated (rueidis, quic-go, opentelemetry, etc)
New Contributors
- @SinimaWath made their first contribution in #691
Full Changelog: v5.0.2...v5.0.3
v5.0.2
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, SSE/EventSource, GRPC, SockJS, 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
- Quiet mode and no expiration for gentoken/gensubtoken cli commands #681 - so token generation using cli helpers is more flexible now
- Add
proxy_static_http_headers
option andstatic_http_headers
key for granular proxy #687 - so it's possible to append custom headers to HTTP proxy requests.
Fixes
- Suppress warnings about k8s env vars, see issue
Misc
- Release is built with Go 1.20.7
- Dependencies updated (rueidis, quic-go, crypto, etc)
- Replace
interface{}
withany
in code base, #682
v5.0.1
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, SSE/EventSource, GRPC, SockJS, 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
This release contains a fix for Centrifugo v5 released yesterday which prevents server from crashing in case of using subscription tokens.
Fixes
- Fix panic upon subscription token validation caused by nil interface comparison, commit
v5.0.0 💻✨🔮✨💻
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, SSE/EventSource, GRPC, SockJS, 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 in Centrifugo v5 🔥🔥🔥
In Centrifugo v5 we're phasing out old client protocol support, introducing a more intuitive HTTP API, adjusting token management behaviour in SDKs, improving configuration process, and refactoring the history meta ttl option. As the result you get a cleaner, more user-friendly, and optimized Centrifugo experience.
All the major details about the release may be found in Centrifugo v5 release announcement in our blog.
We've also prepared Centrifugo v5 migration guide which has more specific details about changes.
Misc
- This release is built with Go 1.20.5
v4.1.5
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, SSE/EventSource, GRPC, SockJS, 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.
Release notes
Improvements
- DEB release for Ubuntu Jammy, by @diasjorge
Fixes
- Fix sending usage stats: handle max values reset race, fixes #667
v4.1.4
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, SSE/EventSource, GRPC, SockJS, 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.
Release notes
Fixes
- Update Redis client to the latest version which properly connects to Redis Sentinel with ipv6 address
v4.1.3
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, SSE/EventSource, GRPC, SockJS, 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.
Release notes
Improvements
- Dynamic JWKS endpoint based on iss and aud – implemented in #638, documented here
- Add redis_force_resp2 option, #641
- Document client_stale_close_delay, make it 10 sec instead of 25 sec by default, relates #639
Misc
- This release is built with Go 1.20.3
v4.1.2
This is a quick fix release for Centrifugo v4.1.1, which introduced a bug in client protocol. We also copied release notes of Centrifugo v4.1.1 to this release marking v4.1.1 unusable.
Release notes
Fixes
- Fix decoding of large protocol messages. The bug was introduced by v4.1.1. See bug report
- Fix: slow down subscription dissolver workers while Redis PUB/SUB is unavailable. This solves a CPU usage spike which may happen while Redis PUB/SUB is unavailable and last client unsubscribes from some channel.
- Relative static paths in Centrifugo admin web UI (to fix work behind reverse proxy on sub-path)
Improvements
- Possibility to disable client protocol v1 using
disable_client_protocol_v1
boolean option. To remind you about client protocol v1 vs v2 migration in Centrifugo v4 take a look at v3 to v4 migration guide. Centrifugo v4 uses client protocol v2 by default, all our recent SDKs only support client protocol v2. So if you are using modern stack then you can disable clients to use outdated protocol v1 right now. In Centrifugo v5 support for client protocol v1 will be completely removed, see Centrifugo v5 roadmap. - New boolean option
disallow_anonymous_connection_tokens
. When the option is set Centrifugo won't accept connections from anonymous users even if they provided a valid JWT. See #591 and docs - New option
client_connection_rate_limit
to limit the number of new real-time connections Centrifugo may accept per second, see docs - Implement
sub_refresh
proxy to periodically validate expiring subscriptions over the call from Centrifugo to the backend endpoint, see #592 and docs - More human-readable tracing logging output (especially in Protobuf protocol case). On the other hand, tracing log level is much more expensive now. We never assumed it will be used in production – so seems an acceptable trade-off.
- Several internal optimizations in client protocol to reduce memory allocations.
- More strict client protocol: only allow one pong message from client to server after receiving ping, disable sending commands over the connection which returned an error to the Connect command
v4.1.1
v4.1.0
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, SSE/EventSource, GRPC, SockJS, 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.
Release notes
This release contains a rewrite of our Redis Engine. While we expect things to work just fine and in backwards compatible way – please check your app in test environment with new Centrifugo version in case of using Redis Engine. Also, keep more attention than usual to metrics upon upgrading in production. See more details and link to the blog post below.
Improvements
- 🔥 🔥 🔥 Fully rewritten Redis engine using rueian/rueidis library. Many thanks to @j178 and @rueian for the help. Check out details in our blog post Improving Centrifugo Redis Engine throughput and allocation efficiency with Rueidis Go library. We expect that new implementation is backwards compatible with the previous one except some timeout options which were not documented, please report issues if any.
- Extended TLS configuration for Redis – it's now possible to set CA root cert, client TLS certs, set custom server name for TLS. See more details in the updated Redis Engine option docs. Also, it's now possible to provide certificates as strings, not only as paths to files.