Class: Metybur::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/metybur.rb

Instance Method Summary collapse

Constructor Details

#initialize(url, credentials) ⇒ Connection

Returns a new instance of Connection.



36
37
38
# File 'lib/metybur.rb', line 36

def initialize(url, credentials)
  @url, @credentials = url, credentials
end

Instance Method Details

#connect_client(client = Metybur::Client.new(@credentials)) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/metybur.rb', line 40

def connect_client(client = Metybur::Client.new(@credentials))
  websocket = CONFIG[:websocket_client_class].new(@url)
  client.websocket = websocket
  client.connect

  logging_middleware = Metybur::LoggingMiddleware.new
  json_middleware = Metybur::JSONMiddleware.new
  ping_pong_middleware = Metybur::PingPongMiddleware.new(websocket)
  middleware = [logging_middleware, json_middleware, ping_pong_middleware]

  websocket.on(:open) do |event|
    middleware.inject(event) { |e, mw| mw.open(e) }
  end
  websocket.on(:message) do |event|
    middleware.inject(event) { |e, mw| mw.message(e) }
  end
  websocket.on(:close) do |event|
    middleware.inject(event) { |e, mw| mw.close(e) }

    # Reconnect
    connect_client(client)
  end

  client
end