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