Skip to content

Releases: anycable/anycable-go

1.5.3

28 Aug 21:40
Compare
Choose a tag to compare

Fixes

  • Fixed potential race condition in Redis pub/sub during reconnect.

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
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
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
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
Compare
Choose a tag to compare

Features

  • Added Server-Sent Events support.

See documentation.