class MtGox::Websocket::Client

Public Class Methods

connect(args={}) click to toggle source
# File lib/mtgox/websocket/client.rb, line 34
def self.connect(args={})
  client = new(args)
  client.connect
  client
end
new(args={}) click to toggle source
# File lib/mtgox/websocket/client.rb, line 14
def initialize(args={})
  @args = args
  @event_listeners = {}
  @@event_types.each { |et| @event_listeners[et] = [] }
end

Public Instance Methods

connect() click to toggle source
# File lib/mtgox/websocket/client.rb, line 20
def connect
  @conn = ::Faye::WebSocket::Client.new('ws://websocket.mtgox.com:80/mtgox', nil, { 
    headers: {'Origin' => @args[:headers] && @args[:headers][:origin]  || @@default_origin}
  })
      
  @conn.on(:open) { dispatch_event(:open) }
  @conn.on(:close) { dispatch_event(:close) }
  @conn.on(:error) { dispatch_event(:error) }
  @conn.on(:message) do |event|
    data = ::Hashie::Mash.new(JSON.parse(event.data))
    dispatch_event(data.op.to_sym, data)
  end
end
on(event_type, &block) click to toggle source
# File lib/mtgox/websocket/client.rb, line 40
def on(event_type, &block)
  add_event_listener(event_type, &block)
end

Private Instance Methods

add_event_listener(event_type, &block) click to toggle source
# File lib/mtgox/websocket/client.rb, line 46
def add_event_listener(event_type, &block)
  @event_listeners[event_type] << block
end
dispatch_event(event_type, data=nil) click to toggle source
# File lib/mtgox/websocket/client.rb, line 50
def dispatch_event(event_type, data=nil)
  @event_listeners[event_type].each do |block|
    block.call(data)
  end
end