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

ANYCABLE

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.
Landing
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

AnyCable-Go
ActionCable


Reduced memory usage

Handling 20K idle connections

AnyCable-Go
798 MB
ErlyCable
832 MB
ActionCable
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
AnyCable-Go
ErlyCable
ActionCable


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?

# Add AnyCable to your Gemfile

gem 'anycable-rails', group: :production


# Generate server script

rails generate anycable


# Run gRPC server

./bin/anycable


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

anycable-go -addr=0.0.0.0: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!