Skip to content

Releases: centrifugal/centrifugo

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

v4.0.0

20 Jul 08:05
b4744fd
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.

About v4 release

New v4 release takes Centrifugo to the next level in terms of client protocol performance, WebSocket fallback simplicity, SDK ecosystem and channel security model. It also comes with a couple of cutting-edge technologies to experiment with such as HTTP/3 and WebTransport.

This is a major release with breaking changes according to our Centrifugo v4 roadmap.

Several important documents we have at this point can help you get started with Centrifugo v4:

Highlights

  • New client protocol iteration and unified client SDK API. See client SDK API specification.
  • All SDKs now support all the core features of Centrifugo - see feature matrix
  • Our own WebSocket bidirectional emulation layer based on HTTP-streaming and SSE (EventSource). Without sticky session requirement for a distributed case. See details in release post and centrifuge-js README
  • SockJS is still supported but DEPRECATED
  • Redesigned, more efficient PING-PONG – see details in release post
  • Optimistic subscriptions support (implemented in centrifuge-js only at this point) – see details in release post
  • Secure by default channel namespaces – see details in release post
  • Private channel and subscription JWT concepts revised – see details in release post
  • Possibility to enable join/leave, recovery and positioning from the client-side
  • Experimental HTTP/3 support - see details in release post
  • Experimental WebTransport support - see details in release post
  • Avoid sending JSON in WebSocket Close frame reason
  • Temporary flag for errors, allows resilient behavior of Subscriptions
  • gensubtoken and checksubtoken helper cli commands as subscription JWT now behaves similar to connection JWT
  • Legacy options removed, some options renamed, see migration guide for details.
  • meta attached to a connection now updated upon connection refresh
  • centrifuge-js migrated to Typescript
  • The docs on centrifugal.dev were updated for v4, docs for v3 are still there but under version switch widget.
  • Use constant time compare function to compare admin_password and api_key #527

Misc

  • This release is built with Go 1.18.4

v4.0.0-beta.1

09 Jul 19:01
0fef0b1
Compare
Choose a tag to compare
v4.0.0-beta.1 Pre-release
Pre-release

This is a first beta release of Centrifugo v4. Please refer to Centrifugo v4 roadmap for latest details about v4 (and docs on centrifugal.dev already have almost finished docs for v4).

Some useful docs:

We now have Centrifugo v4 beta and recently released centrifuge-js v3.0.0-beta.0. So it's already possible to try things out without using custom branches etc.

Obviously, this release is not for production usage, and some changes can still happen. Please reach out in community chat if you want to try beta release but came across questions/issues - highly appreciate the feedback.

v3.2.3

30 Jun 11:55
dce2f02
Compare
Choose a tag to compare

Centrifugo is an open-source scalable real-time messaging server in a language-agnostic way. It can be a missing piece in your application infrastructure for introducing real-time features. Think chats, live comments, multiplayer games, streaming metrics – you'll be able to build amazing web and mobile real-time apps with a help of Centrifugo. Choose the approach you like:

  • bidirectional communication over WebSocket or SockJS
  • or unidirectional communication over WebSocket, EventSource (Server-Sent Events), HTTP-streaming, GRPC
  • or... combine both!

See centrifugal.dev for more information.

Release notes

No backwards incompatible changes here.

Improvements

  • Support Debian bullseye DEB package release, drop Debian jessie, #520

Fixes

v3.2.2

08 Jun 18:19
d270ad5
Compare
Choose a tag to compare

Centrifugo is an open-source scalable real-time messaging server in a language-agnostic way. It can be a missing piece in your application infrastructure for introducing real-time features. Think chats, live comments, multiplayer games, streaming metrics – you'll be able to build amazing web and mobile real-time apps with a help of Centrifugo. Choose the approach you like:

  • bidirectional communication over WebSocket or SockJS
  • or unidirectional communication over WebSocket, EventSource (Server-Sent Events), HTTP-streaming, GRPC
  • or... combine both!

See centrifugal.dev for more information.

Release notes

No backwards incompatible changes here.

Fixes

  • Fix top-level granular subscribe and publish proxies #517.

Misc

  • This release is built with Go 1.17.11.

v3.2.1

30 May 14:38
b455ff1
Compare
Choose a tag to compare

Centrifugo is an open-source scalable real-time messaging server in a language-agnostic way. It can be a missing piece in your application infrastructure for introducing real-time features. Think chats, live comments, multiplayer games, streaming metrics – you'll be able to build amazing web and mobile real-time apps with a help of Centrifugo. Choose the approach you like:

  • bidirectional communication over WebSocket or SockJS
  • or unidirectional communication over WebSocket, EventSource (Server-Sent Events), HTTP-streaming, GRPC
  • or... combine both!

See centrifugal.dev for more information.

Release notes

No backwards incompatible changes here.

Improvements

  • Centrifugo now periodically sends anonymous usage information (once in 24 hours). That information is impersonal and does not include sensitive data, passwords, IP addresses, hostnames, etc. Only counters to estimate version and installation size distribution, and feature usage. See implementation in #516. Please do not disable usage stats sending without reason. If you depend on Centrifugo – sure you are interested in further project improvements. Usage stats help us understand Centrifugo use cases better, concentrate on widely-used features, and be confident we are moving in the right direction. Developing in the dark is hard, and decisions may be non-optimal. See docs for more details.

Misc

  • We continue working on Centrifugo v4, look at our v4 roadmap where the latest updates are shared. BTW Centrifugo v3 already has code to work over new protocol which we aim to make default in v4. It's already possible to try out our own bidirectional emulation layer with HTTP-streaming and Eventsource transports. Don't hesitate reaching out if you depend on Centrifugo and want to understand more what's coming in next major release. We are actively collecting feedback at the moment.
  • This release is built with Go 1.17.10.