- Require MFA to publish the gem.
- Use the same default port for HTTP broadcasts as in AnyCable. (@palkan)
-
Update gRPC server keepalive configuration. (@palkan)
Should fix the
ENHANCE_YOUR_CALMlogs at the server side.
- Add presence support. (@palkan)
- 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
secretandbroadcast_keyconfiguration 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_ageoption (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_PATHandANYCABLE_REDIS_TLS_CLIENT_KEY_PATHsettings to specify client certificate and key when connecting to Redis server that requires clients to authenticate themselves.
- Add
ANYCABLE_REDIS_TLS_VERIFYsetting to disable validation of Redis server TLS certificate. (@Envek)
- Pass unique connection id (session id) in the
anycable.sidRack 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
grpcmissing .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=:password1@my.redis.sentinel.first:26380,:password2@my.redis.sentinel.second:26380.
-
Add
embeddedoption to CLI runner. (@palkan) -
Add
Env#istateandEnvResponse#istateto store channel state. (@palkan)
That would allow to mimic instance variables usage in Action Cable channels.
- Add
CommandResponse#stopped_streamsto support unsubscribing from particular broadcastings. (@palkan)
Socket#unsubscribe is now implemented as well.
- Add
AnyCable.broadcast_adapter#broadcast_commandmethod. (@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
requestsupport 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
[::]:50051to127.0.0.1:50051. (@palkan)
See #71.
- Fix building Redis Sentinel config. (@palkan)
See Changelog for versions <1.0.0.