-
Process each connection's commands in the order the client sent them.
Commands were handed to the worker pool independently, so two commands from one connection could run at the same time or out of order. When a client unsubscribed from a channel and subscribed to it again, as page navigations do, the subscribe could run first and be rejected as a duplicate, leaving the client without a subscription until it re-sent the command. A connection's work (opening, commands, stream callbacks, periodic timers and closing) now runs one at a time, in order, still on the worker pool's threads.
Sam Ruby
-
Move ActionCable::Server::Configuration to
::ActionCable::Configuration.The old constant remains available as an alias.
Samuel Williams
-
Respect calls to
#rejectinbefore_subscribecallbacks.It doesn't call
#subscribedif abefore_subscribecallback calls#reject.Joshua Young
-
Extract low-level Action Cable server responsibilities into
::ActionCable::Serverabstractions.This refactoring separates socket handling, concurrency primitives, and other transport-specific behavior from application-level connections and channels. It makes Action Cable more flexible as a framework and opens the door to alternative server implementations without changing user-facing channel and connection code.
Vladimir Dementyev
-
Fix Action Cable origin check to respect
X-Forwarded-Hostbehind reverse proxies.The
allow_same_origin_as_hostcheck previously compared against the rawHTTP_HOSTheader, which fails when a proxy forwards requests with a different internal host. It now usesrequest.host_with_port, consistent with the rest of Rails.Jordan Brough
-
Channel generator now detects which JS package manager to use when installing javascript dependencies.
David Lowenfels
Please check8-1-stable for previous changes.