github centrifugal/centrifugo v4.0.0

latest releases: v5.4.5, v5.4.4, v5.4.3...
2 years ago

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

Don't miss a new centrifugo release

NewReleases is sending notifications on new releases.