Method: ActionCable::Connection::Subscriptions#add

Defined in:
lib/action_cable/connection/subscriptions.rb

#add(data) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/action_cable/connection/subscriptions.rb', line 33

def add(data)
  id_key = data["identifier"]
  id_options = ActiveSupport::JSON.decode(id_key).with_indifferent_access

  return if subscriptions.key?(id_key)

  subscription_klass = id_options[:channel].safe_constantize

  if subscription_klass && ActionCable::Channel::Base > subscription_klass
    subscription = subscription_klass.new(connection, id_key, id_options)
    subscriptions[id_key] = subscription
    subscription.subscribe_to_channel
  else
    logger.error "Subscription class not found: #{id_options[:channel].inspect}"
  end
end