0.01
The project is in a healthy, maintained state
Next-gen version of Action Cable
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

>= 7.0, <= 8.1
>= 7.0, <= 8.1
~> 2.0
~> 2.6
 Project Readme

Action Cable Next

This gem provides the functionality of the server adapterization PR: rails/rails#50979.

See the PR description for more information on the purpose of this refactoring.

There are also some additional improvements added on top of the PR (see below).

Usage

Add this line to your application's Gemfile before Rails or Action Cable:

gem "actioncable-next"

gem "rails", "~> 7.0"

Then, you can use Action Cable as before. Under the hood, the new implementation would be used.

RSpec support

This gem also includes the corresponding patch for RSpec Rails (see PR). You MUST activate it explicitly by adding the following line to your spec/rails_helper.rb:

# after rspec-rails is loaded
require "rspec/rails"
require "action_cable/next/rspec"

New features

ActionCable.server.config.fastlane_broadcasts_enabled = true

This option allows you to enable the fast lane for broadcasting messages. When enabled, messages sent via ActionCable.server.broadcast are only decoded-encoded from/to JSON once per channel identifier and not for every connected client. This significantly reduces the broadcasting latency (up to 2x faster).

Connection#broadcast

You can now broadcast message from connection or channel instances using the connection #broadcast method. For example:

class TestChannel < ActionCable::Channel::Base
  def notify_all(data)
    connection.broadcast("testing-#{test_id}", data)
  end
end

The purpose of this interface is to avoid direct usage of server or ActionCable.server in channels code.