If you need to disconnect a given connection, you can go through the RemoteConnections. You can find the connections you're looking for by searching for the identifier declared on the connection. For example:
module ApplicationCable class Connection < ActionCable::Connection::Base identified_by :current_user .... end end ActionCable.server.remote_connections.where(current_user: User.find(1)).disconnect
This will disconnect all the connections established for
User.find(1), across all servers running on all machines, because it uses the internal channel that all of these servers are subscribed to.
# File actioncable/lib/action_cable/remote_connections.rb, line 25 def initialize(server) @server = server end
# File actioncable/lib/action_cable/remote_connections.rb, line 29 def where(identifier) RemoteConnection.new(server, identifier) end
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.