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).
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.
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"
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).
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.