Skip to content

Releases: centrifugal/centrifugo

v4.1.4

14 Jun 10:09
d2037ab
Compare
Choose a tag to compare

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

20 Apr 06:15
24d7894
Compare
Choose a tag to compare

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

Misc

  • This release is built with Go 1.20.3

v4.1.2

11 Jan 18:39
aa8b0ae
Compare
Choose a tag to compare

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

10 Jan 18:02
18f3ba2
Compare
Choose a tag to compare

🛑🛑🛑 Please, wait for v4.1.2 release – this version contains protocol bug, see #603. Do not use this release version.

UPD: v4.1.2 released

v4.1.0

19 Dec 18:02
f4bcc3c
Compare
Choose a tag to compare

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

v4.0.5

14 Dec 12:11
657202b
Compare
Choose a tag to compare

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

  • Fix non-working bidirectional emulation in multi-node case #590
  • Process client channels for no-credentials case also, see issue #581
  • Fix setting allow_positioning for top-level namespace, commit

Misc

  • This release is built with Go 1.19.4

v4.0.4

10 Nov 17:52
8b9d27d
Compare
Choose a tag to compare

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 an important fix of Centrifugo memory leak. The leak happens in all setups which use Centrifugo v4.0.2 or v4.0.3.

Fixes

  • Fix goroutine leak on connection close introduced by v4.0.2, commit

Misc

  • This release is built with Go 1.19.3

v4.0.3

24 Oct 06:59
94ebb12
Compare
Choose a tag to compare

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

  • Fix insensitive case match for granular proxy headers, #572

v4.0.2

17 Oct 19:18
84dd186
Compare
Choose a tag to compare

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 one more fix of v4 degradation (not respecting force_push_join_leave option for top-level namespace), comes with updated admin web UI and other improvements.

Fixes

  • Handle force_push_join_leave option set for top-level namespace – it was ignored so join/leave messages were not delivered to clients, commit
  • Properly handle b64data in server publish API, commit

Improvements

  • Updated admin web UI. It now uses modern React stack, fresh look based on Material UI and several other small improvements. See #566 for more details
  • Case-insensitive http proxy header configuration #558
  • Use Alpine 3.16 instead of 3.13 for Docker builds, commit
  • Add missing empty object results to API command responses, commit
  • Disconnect clients in case of inappropriate protocol centrifugal/centrifuge#256

Misc

  • This release is built with Go 1.19.2

v4.0.1

25 Aug 07:50
f58f386
Compare
Choose a tag to compare

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 an important fix of v4 degradation (proxying user limited channel) and comes with several nice improvements.

Fixes

  • Avoid proxying user limited channel #550
  • Look at subscription source to handle token subs change #545

Improvements

  • Configure server-to-client ping/pong intervals #551, docs
  • Option client_connection_limit to set client connection limit for a single Centrifugo node #546, docs
  • Option api_external to expose API handler on external port #536
  • Use go.uber.org/automaxprocs to set GOMAXPROCS #528, this may help to automatically improve Centrifugo performance when it's running in an environment with cgroup-restricted CPU resources (Docker, Kubernetes).
  • Nats broker: use push format from client protocol v2 #542

Misc

  • While working on Centrifuge lib @j178 found a scenario where connection to Redis could leak, this was not observed and reported in Centrifugo outside the test suite, but it seems that theoretically connections to Redis from Centrifugo could leak with time if the network between Centrifugo and Redis is unstable. This release contains an updated Redis engine which eliminates this.
  • This release is built with Go 1.18.5