Illustration2Rails Application + ActionCable + AnyCableRuby Application + LiteCable + AnyCableClient ApplicationsWS Server


Action Cable on steroids!

Combines the good parts of Action Cable with the power of your favorite language for concurrent applications

You Had

Client applications communicating with Rails through Action Cable.

It's written in Ruby and doesn't act well in terms of resources usage and overall performance, especially under high load.
IllustrationRails Application + ActionCableClient ApplicationsWS Server

Now You Have

AnyCable plugged into the Rails application that allows you to use custom WebSocket server.

Try one of the existing AnyCable servers or write your own in any language you like.
Illustration2Rails Application + ActionCable + AnyCableClient ApplicationsWS Server

Reduced CPU usage

Running WebSocket Shootout benchmark

Action Cable

Reduced memory usage

Handling 20K connections

798 MB
832 MB
Action Cable
3,5 GB

Drastically increased broadcasting performance

Broadcast RTT depending on number of connections

Group 5 Created with Sketch. 1K 0 1 2 3 4 5 6 7 8 9 10 2K 3K 4K 5K 6K 7K 8K 9K 10K
Action Cable

Outside of Rails usage

AnyCable doesn't depend on Rails.
You can use it with other Ruby applications too.

Check out Sinatra example.

How To Use With Rails?

# Gemfile

gem 'anycable-rails'

# config/cable.yml


  adapter: :any_cable

# Run gRPC server

$ bundle exec anycable

# Run WebSocket server (e.g. anycable-go)

$ anycable-go --port 3334

Compatible with ActionCable
Choose one of the existing servers or build your own
Powered by gRPC
Want to contribute? Fork us on GitHub!
Have a question? Ask us on Gitter!