- Update google-protobuf to version 4 (support Ruby 3.4). (@le0pard)
- Fixed compatibility with Rack 3.1 (@earlopain)
-
Fixed gRPC keepalive settings to align with the Go server client. (@palkan)
-
Added JWT utils. (@palkan)
You can now generate and verify AnyCable JWT tokens without using additional dependencies:
token = AnyCable::JWT.encode({user_id: "1"})
identifiers = AnyCable::JWT.decode(token)
This change will deprecate anycable-rails-jwt
.
- Added signed streams support. (@palkan)
You can generate signed stream names as follows:
signed_name = AnyCable::Streams.sign("chat/2024")
- Added
secret
andbroadcast_key
configuration parameters. (@palkan)
- Fix parsing sentinel configuration from YAML in Rails. (@palkan)
- Add TLS support for gRPC server. (@Envek)
A next-gen (Broker-compatible) broadcasting adapter using Redis Streams.
- Fix gRPC health check response for an empty service. (@palkan)
As per docs, an empty service is used as the key for server's overall health status. So, if we serve any services, we should return SERVING
status.
- Add gRPC health check when using grpc_kit. (@palkan)
- Add configuration presets. (@palkan)
Provide sensible defaults matching current platform (e.g., Fly.io).
-
Require Ruby 2.7+ and Anyway Config 2.2+.
-
Add
rpc_max_connection_age
option (if favour ofrpc_server_args.max_connection_age_ms
) and configured its default value to be 300 (5 minutes). (@palkan) -
(Experimental) Add support for grpc_kit as an alternative gRPC implementation. (@palkan, @cylon-v)
Add grpc_kit
to your Gemfile and specify ANYCABLE_GRPC_IMPL=grpc_kit
env var to use it.
-
Setting the redis driver to ruby specified. (@smasry)
-
Add mutual TLS support for connections to Redis. (@Envek)
ANYCABLE_REDIS_TLS_CLIENT_CERT_PATH
andANYCABLE_REDIS_TLS_CLIENT_KEY_PATH
settings to specify client certificate and key when connecting to Redis server that requires clients to authenticate themselves.
- Add
ANYCABLE_REDIS_TLS_VERIFY
setting to disable validation of Redis server TLS certificate. (@Envek)
- Pass unique connection id (session id) in the
anycable.sid
Rack env field. (@palkan)
- Allow Ruby 2.6.
-
Fix RBS signature. (@palkan)
-
Add empty (
''
) service to gRPC health check as "NOT_SERVING". (@palkan)
- Drop Ruby 2.6 support.
- Do not swallow
grpc
missing .so exceptions. (@palkan)
- Added support for type coercion from Anyway Config 2.2. (@palkan)
- Improved gRPC server args support. (@palkan)
Add ability to declare gRPC server args without namespacing (i.e., "max_connection_age_ms"
instead of "grpc.max_connection_age_ms"
). That makes it possible to use ENV vars to provide the gRPC configuration.
- Fixed error message when RPC implementation is missing. (@palkan)
We haven't extracted anycable-grpc
yet.
- No changes since 1.1.0.rc1.
- BREAKING Move middlewares from gRPC interceptors to custom implementation. (@palkan)
That allowed us to have real middlewares with ability to modify responses, intercept exceptions, etc. The API changed a bit:
class SomeMiddleware < AnyCable::Middleware
- def call(request, rpc_call, rpc_handler)
+ def call(rpc_method_name, request, metadata)
yield
end
end
- Ruby >= 2.6 is required.
- Anyway Config >= 2.1 is required.
- Ruby 3.0 compatibility. (@palkan)
- Handle TLS Redis connections by using VERIFY_NONE mode. (@palkan)
- Support providing passwords for Redis Sentinels. (@palkan)
Use the following format: ANYCABLE_REDIS_SENTINELS=:[email protected]:26380,:[email protected]:26380
.
-
Add
embedded
option to CLI runner. (@palkan) -
Add
Env#istate
andEnvResponse#istate
to store channel state. (@palkan)
That would allow to mimic instance variables usage in Action Cable channels.
- Add
CommandResponse#stopped_streams
to support unsubscribing from particular broadcastings. (@palkan)
Socket#unsubscribe
is now implemented as well.
- Add
AnyCable.broadcast_adapter#broadcast_command
method. (@palkan)
It could be used to send commands to WS server (e.g., remote disconnect).
Using anycable-go
v1.x is required.
Server must sent protov
metadata with the supported versions (comma-separated list). If there is no matching version an exception is raised.
Current RPC proto version is v1.
- Added
request
support to channels. (@palkan)
Now you can access request
object in channels, too (e.g., to read headers/cookies/URL/etc).
- Change default server address from
[::]:50051
to127.0.0.1:50051
. (@palkan)
See #71.
- Fix building Redis Sentinel config. (@palkan)
See Changelog for versions <1.0.0.