Gem Version Build Status Circle CI

Anycable

AnyCable allows you to use any WebSocket server (written in any language) as a replacement for built-in Ruby ActionCable server.

With AnyCable you can use channels, client-side JS, broadcasting - (almost) all that you can do with ActionCable.

You can even use ActionCable in development and not be afraid of compatibility issues.

Example Application

Sponsored by Evil Martians

Requirements

  • Ruby ~> 2.3;
  • Rails ~> 5.0;
  • Redis

How It Works?

Compatible WebSocket servers

Installation

Add Anycable to your application's Gemfile:

gem 'anycable', group: :production

And then run:

rails generate anycable

to create executable.

You can use built-in ActionCable for test and development.

Configuration

Add config/anycable.ymlif you want to override defaults (see below):

production:
  # gRPC server host
  rpc_host: "localhost:50051"
  # Redis URL (for broadcasting) 
  redis_url: "redis://localhost:6379/2"
  # Redis channel name
  redis_channel: "anycable"

Anycable uses anyway_config, thus it is also possible to set configuration variables through secrets.yml or environment vars.

Usage

Run Anycable server:

./bin/anycable

ActionCable Compatibility

Feature Status
Connection Identifiers +
Connection Request (cookies, params) +
Disconnect Handling coming soon
Subscribe to channels +
Parameterized subscriptions coming soon
Unsubscribe from channels +
Subscription Instance Variables -
Performing Channel Actions +
Streaming +
Custom stream callbacks -
Broadcasting +

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/anycable/anycable.

License

The gem is available as open source under the terms of the MIT License.