Method: ActionCable::Connection::ClientSocket#initialize

Defined in:
actioncable/lib/action_cable/connection/client_socket.rb

#initialize(env, event_target, event_loop, protocols) ⇒ ClientSocket

Returns a new instance of ClientSocket.



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'actioncable/lib/action_cable/connection/client_socket.rb', line 36

def initialize(env, event_target, event_loop, protocols)
  @env          = env
  @event_target = event_target
  @event_loop   = event_loop

  @url = ClientSocket.determine_url(@env)

  @driver = @driver_started = nil
  @close_params = ["", 1006]

  @ready_state = CONNECTING

  # The driver calls `env`, `url`, and `write`
  @driver = ::WebSocket::Driver.rack(self, protocols: protocols)

  @driver.on(:open)    { |e| open }
  @driver.on(:message) { |e| receive_message(e.data) }
  @driver.on(:close)   { |e| begin_close(e.reason, e.code) }
  @driver.on(:error)   { |e| emit_error(e.message) }

  @stream = ActionCable::Connection::Stream.new(@event_loop, self)
end