v0.33.0
What's Changed
v0.33.0 is a quite massive release of Centrifuge. To highlight some important changes:
- Delta compression support based on Fossil algorithm. It already serves as Centrifugo feature. Only Javascript SDK (
centrifuge-js
) supports it for now. Example of usage may be found in Compression playground which was created to evaluate the feature. BTW check out blog post Experimenting with real-time data compression by simulating a football match events which describes the experiment and possible benefits of delta compression in channels – in some cases it can reduce bandwidth dramatically. - Support Cache Recovery Mode – a mode in which recovery only restores the latest message in channel. It makes Centrifugo channels to work kind of real-time cache. More motivation can be found in Centrifugo docs - where this feature is already available for some time. With this release users of Centrifuge library can inherit the feature also. See example which demonstrates the usage.
- Several new helpful metrics were added for greater observability of Centrifuge-based servers (see below)
- Work on connection and server performance and stability - fixed a couple of possible panics, also race condition which could lead to the incorrect number of clients/subscribers on node, several performance improvements for WebSocket Upgrade process.
- Options to use multiple brokers and presence managers open a new dimension of flexibility – new way to scale, new way to have different channel properties in different channels within one Centrifuge-based servers cluster.
- And much more actually, see full changelog below. BTW join our communities if you need any help with the changes.
Now all changes included into v0.33.0 release:
- chore: fix some typos in comment by @peicuiping in #377
- Use SliceData and StringData for bytes <-> string conversion by @FZambia in #378
- Prepared message cache for compression, websocket upgrade performance improvements by @FZambia in #376
- Cache recovery mode, delta encoding, channel medium layer by @FZambia in #348
- Option to send server time in connect result by @FZambia in #379
- Support server time in unidirectional case by @FZambia in #381
- Add server unsubscribes metric by @FZambia in #383
- Add example of real-time document sync by @FZambia in #384
- Option to mark positioned clients with insufficient state if publication lag exceeds threshold by @FZambia in #385
- Integration tests with DragonflyDB, drop testing with Redis 5 by @FZambia in #386
- Fix panic on already subscribed error by @FZambia in #390
- Options to use multiple brokers and presence managers by @FZambia in #394
- Prevent connection deadlock and improper subscribers count by @FZambia in #395
- Add centrifuge_client_ping_pong_duration_seconds histogram by @FZambia in #396
- transport label for ping_pong_duration_seconds by @FZambia in #397
- Pin to rueidis version without panic due to client use after recycled by @FZambia in #400
New Contributors
- @peicuiping made their first contribution in #377
❯ gorelease -base v0.32.2 -version v0.33.0
# github.com/centrifugal/centrifuge
## incompatible changes
BrokerEventHandler.HandlePublication: changed from func(string, *Publication, StreamPosition) error to func(string, *Publication, StreamPosition, bool, *Publication) error
## compatible changes
(*Node).HandleControl: added
(*Node).HandleJoin: added
(*Node).HandleLeave: added
(*Node).HandlePublication: added
(*Node).OnCacheEmpty: added
CacheEmptyEvent: added
CacheEmptyHandler: added
CacheEmptyReply: added
ChannelMediumOptions: added
Config.ClientChannelPositionMaxTimeLag: added
Config.ClientConnectIncludeServerTime: added
Config.GetBroker: added
Config.GetChannelMediumOptions: added
Config.GetPresenceManager: added
DeltaType: added
DeltaTypeFossil: added
Publication.Channel: added
Publication.Time: added
PublishOptions.UseDelta: added
RecoveryMode: added
RecoveryModeCache: added
RecoveryModeStream: added
SubscribeOptions.AllowedDeltaTypes: added
SubscribeOptions.RecoveryMode: added
WebsocketConfig.CompressionPreparedMessageCacheSize: added
WithDelta: added
WithRecoveryMode: added
# summary
v0.33.0 is a valid semantic version for this release.
Full Changelog: v0.32.2...v0.33.0