class Metybur::Connection

Public Class Methods

new(url, credentials) click to toggle source
# File lib/metybur.rb, line 36
def initialize(url, credentials)
  @url, @credentials = url, credentials
end

Public Instance Methods

connect_client(client = Metybur::Client.new(@credentials)) click to toggle source
# 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