Class: Combi::WebSocket::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/combi/buses/web_socket.rb

Instance Method Summary collapse

Constructor Details

#initialize(remote_api, handler, bus) ⇒ Client

Returns a new instance of Client.



40
41
42
43
44
# File 'lib/combi/buses/web_socket.rb', line 40

def initialize(remote_api, handler, bus)
  @handler = handler
  @remote_api = remote_api
  @bus = bus
end

Instance Method Details

#open_websocketObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/combi/buses/web_socket.rb', line 60

def open_websocket
  Combi.logger.debug { "Remote API #{@remote_api}" }
  @ws = ws = Faye::WebSocket::Client.new(@remote_api)
  ws.on :open do |event|
    Combi.logger.debug {"OPEN WITH HANDLER #{@handler.inspect}"}
    @handler.on_open if @handler.respond_to?(:on_open)
    @bus.ready.succeed
  end

  ws.on :message do |event|
    Combi.logger.debug {"ON MESSAGE: #{event.data[0..500]}"}
    message = Yajl::Parser.parse event.data, symbolize_keys: true
    @bus.on_message(ws, message)
  end

  ws.on :close do |event|
    Combi.logger.debug {"close #{event.code}: #{event.reason}"}
    @handler.on_close if @handler.respond_to?(:on_close)
    @ws = ws = nil
  end

  ws.on :error do |event|
    Combi.logger.debug {"received error: #{event.inspect}"}
    stop!
  end
end

#restart!Object



55
56
57
58
# File 'lib/combi/buses/web_socket.rb', line 55

def restart!
  stop!
  start!
end

#start!Object



46
47
48
# File 'lib/combi/buses/web_socket.rb', line 46

def start!
  open_websocket
end

#stop!Object



50
51
52
53
# File 'lib/combi/buses/web_socket.rb', line 50

def stop!
  ws && ws.close
  Combi.logger.debug {"stop requested"}
end

#wsObject



87
88
89
# File 'lib/combi/buses/web_socket.rb', line 87

def ws
  @ws
end