Skip to content

Releases: anycable/anycable-go

1.5.2

04 Jun 17:59
Compare
Choose a tag to compare
  • Added ?raw=1 option for SSE clients to receive only data messages (ignoring all protocol events)

1.5.1

17 Apr 02:49
Compare
Choose a tag to compare
  • Add ?stream, ?signed_stream and ?history_since support for SSE connections.

  • Minor logging improvements

1.5.0

01 Apr 23:52
Compare
Choose a tag to compare

Features

  • Signed and public streams support.

    We made signed streams functionality previously available for Hotwire applications (Turbo Streams) generic and available to everyone. Thus, it's now possible to use AnyCable without RPC as a regular pub/sub server with plain channels (but with all other features, like reliability, available 😉).

    This feature also comes with the initial support for client-initiated broadcasts, or whispers.

    See docs.

  • New secrets schema.

    Now a single secret is enough to secure all AnyCable features; we call it an application secret. You can provide it via the --secret flag or the ANYCABLE_SECRET=<val> env var. It's used as is for JWT and signed streams (unless specific secrets specified) and as a secret base for HTTP RPC and HTTP broadcasting (again, unless specific keys specified).

    There is also new --broadcast_key (ANYCABLE_BROADCAST_KEY) that is meant to be used to authenticate broadcast actions. Currently, it's only used by HTTP broadcasting (as a replacement for http_broadcast_secret).

  • Public mode.

    You can run AnyCable in an insecure mode (at your own risk): no authentication (unless JWT specified), public streams, no HTTP broadcasting authentication. You can enable this move via the --public toggle or by setting ANYCABLE_PUBLIC=true.

    It's also possible to partially disable protections via --noauth and --public_streams parameters.

  • Embedding.

    AnyCable Go now provides interface that allows you to embed it into existing Go web programs and use its HTTP handlers (for WebSockets, SSE, broadcasting).

    See docs.

Changes

  • HTTP broadcasting endpoint is enabled by default.

    Depending on security settings (whether the application secret or broadcast key is present), we expose HTTP broadcasting endpoint on the main application port (when secured) or :8090 (when no authentication required, previous behaviour).

  • Multiple configuration parameters name changes (you will see deprecation warning on the server start with instructions on how to migrate)

  • Logging format has changed.

    We migrated to Go log/slog package for performance and DX reasons and decided to stick to the default Go log formatting.

See also

1.5.0-rc.1

13 Mar 03:06
Compare
Choose a tag to compare
1.5.0-rc.1 Pre-release
Pre-release

Features

  • Signed and public streams support.

We made signed streams functionality previously available for Hotwire applications (Turbo Streams) generic and available to everyone. Thus, it's now possible to use AnyCable without RPC as a regular pub/sub server with plain channels (but with all other features, like reliability, available 😉).

See docs.

  • New secrets schema.

Now a single secret is enough to secure all AnyCable features; we call it an application secret. You can provide it via the --secret flag or the ANYCABLE_SECRET=<val> env var. It's used as is for JWT and signed streams (unless specific secrets specified) and as a secret base for HTTP RPC and HTTP broadcasting (again, unless specific keys specified).

There is also new --broadast_key (ANYCABLE_BROADCAST_KEY) that is meant to be used to authenticate broadcast actions. Currently, it's only used by HTTP broadcasting (as a replacement for http_broadcast_secret).

  • Public mode.

You can run AnyCable in an insecure mode (at your own risk): no authentication (unless JWT specified), public streams, no HTTP broadcasting authentication. You can enable this move via the --public toggle or by setting ANYCABLE_PUBLIC=true.

It's also possible to partially disable protections via --noauth and --public_streams parameters.

  • Embedding.

AnyCable Go now provides interface that allows you to embed it into existing Go web programs and use its HTTP handlers (for WebSockets, SSE, broadcasting).

See docs.

Changes

  • HTTP broadcasting endpoint is enabled by default.

Depending on security settings (whether the application secret or broadcast key is present), we expose HTTP broadcasting endpoint on the main application port (when secured) or :8090 (when no authentication required, previous behaviour).

  • Multiple configuration parameters name changes (you will see deprecation warning on the server start with instructions on how to migrate)

  • Logging format has changed.

We migrated to Go log/slog package for performance and DX reasons and decided to stick to the default Go log formatting.

See also

1.4.8

10 Jan 23:28
Compare
Choose a tag to compare

Features

  • Added --redis_disable_cache flag to disable client-side caching for Redis clients.

Use this flag if your provider doesn't support CLIENT TRACKING.

1.4.7

03 Nov 18:44
ce7fe56
Compare
Choose a tag to compare

Features

  • Added NATS-based broker.

This broker uses JetStream under the hood (so you MUST enable it on your NATS server):

$ anycable-go --broker=nats --nats_servers=nats://localhost:4222

  INFO 2023-10-28T00:57:53.937Z context=main Starting AnyCable 1.4.6-c31c153 (with mruby 1.2.0 (2015-11-17)) (pid: 29874, open file limit: 122880, gomaxprocs: 8)
  INFO 2023-10-28T00:57:53.937Z context=main Starting NATS broker: nats://localhost:4222 (history limit: 100, history ttl: 300s, sessions ttl: 300s)

Embedded NATS is also supported:

$ anycable-go --embed_nats --broker=nats

  INFO 2023-10-28T00:59:01.177Z context=main Starting AnyCable 1.4.6-c31c153 (with mruby 1.2.0 (2015-11-17)) (pid: 30693, open file limit: 122880, gomaxprocs: 8)
  INFO 2023-10-28T00:59:01.177Z context=main Starting NATS broker: nats://127.0.0.1:4222 (history limit: 100, history ttl: 300s, sessions ttl: 300s)
  INFO 2023-10-28T00:59:01.205Z context=main Embedded NATS server started: nats://127.0.0.1:4222
  ...

1.4.6

26 Oct 00:04
06129c8
Compare
Choose a tag to compare

Changes

  • Infer RPC implementation from RPC host.

    Feel free to drop rpc_impl configuration parameter.

  • Enhance Fly configuration preset to enable embedded NATS and configure HTTP broadcaster port.

1.4.5

16 Oct 05:47
0624e41
Compare
Choose a tag to compare

Features

  • Added batch broadcasts support.
  • Added broadcast options support (e.g., exclude_socket)

See API docs and Rails docs.

Fixes

  • Fixed passing session ID over HTTP RPC
  • Fix recognizing database number in Redis URLs

1.4.4

08 Sep 03:32
2dbeb6b
Compare
Choose a tag to compare

Features

  • Added Server-Sent Events support.

See documentation.

1.4.3

11 Aug 04:53
214a549
Compare
Choose a tag to compare

Features

  • Added ability to require pong messages from clients (for better detection of broken connections).

Use --pong_timoout=<number of seconds to wait for ping> option to enable this feature.

  • Added ability to configure ping interval and ping timestamp precision per connection.

You can use URL query params to configure ping interval and timestamp precision per connection:

For example, using the following URL, you can set the ping interval to 10 seconds and the timestamp precision to milliseconds:

ws://localhost:8080/cable?pi=10&ptp=ms
  • PRO: Added support for binary version of the extended protocol (actioncable-v1-ext-msgpack and actioncable-v1-ext-protobuf).

Fixes

  • Minor memory broker fixes.