Centrifugo v4.0.0 Release Notes

  • 🆕 New v4 release puts Centrifugo to the next level in terms of client protocol performance, WebSocket fallback simplicity, SDK ecosystem and channel security model. 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