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