Skip to content

1.4.0

Compare
Choose a tag to compare
@palkan palkan released this 08 Jul 03:34

Highlights

  • Reliable streams and resumable sessions.

AnyCable-Go improves data consistency of your real-time applications by allowing clients to request the missed messages on re-connection and restore their state without re-authentication and re-subscription to channels.

See documentation for details.

  • RPC over HTTP.

AnyCable now supports RPC over HTTP communication as an alternative to gRPC one. This allows you to embed AnyCable RPC part into your web server (e.g., Puma) without requiring a separate process or port. This is especially useful for Heroku deployments.

See documentation for details.

Features

  • Redis X broadcasting adapter.

Redis X is a new broadcasting adapter that use Redis Streams instead of Publish/Subscribe to deliver broadcasting messages from your application to WebSocket servers. This is another step towards improved consistency: no message broadcasted from your application will be lost, even if WebSocket servers are temporarily unavailable. This is especially useful in combination with reliable streams.

See documentation for details.

Changes

  • Broadcasted messages are now delivered in the order they were received by the server.

Previously, we used an executor pool internally to deliver broadcasted messages concurrently (to reduce the latency). That led to nonderterministic order of messages within a single stream delivered in a short period of time. Now, we preserve the order of messages within a stream—the delivered as they were accepted by the server.

  • New disconnect modes and --disable_disconnect deprecation.

AnyCable-Go becomes smarter with regards to performing Disconnect calls. In the default mode ("auto"), clients not relying on #disconnect / #unsubscribed callbacks do not trigger Disconnect RPC calls on connection close. Thus, if you use JWT identification and Hotwire signed streams with AnyCable-Go, you don't need to worry about the --disable_disconnect option to use AnyCable in the RPC-less mode.

The previous --disable_disconnect behaviour can be achieved by setting --disconnect_mode=never.