class Bitstamp::Websocket
Constants
- BASE_URI
- CLIENT_ID
- PARAMS
- PROTOCOL
Public Class Methods
new(logger)
click to toggle source
# File lib/bitstamp/websocket.rb, line 19 def initialize(logger) @logger = logger end
Public Instance Methods
listen(channel, event, block)
click to toggle source
# File lib/bitstamp/websocket.rb, line 23 def listen(channel, event, block) EM.run do setup_socket(channel, event, block) end end
setup_socket(channel, event, block)
click to toggle source
# File lib/bitstamp/websocket.rb, line 29 def setup_socket(channel, event, block) websocket = Faye::WebSocket::Client.new(BASE_URI + PARAMS) websocket.on(:open) do |message| subscribe(websocket, channel) @logger.debug("Opened connection and subscribed to '#{channel}'") end websocket.on(:message) do |message| parsed_message = handle_body(message.data) case parsed_message.fetch('event') when event data = handle_body(parsed_message.fetch('data')) block.call(data) when 'pusher:connection_established' @logger.debug('Connection established') when 'pusher_internal:subscription_succeeded' @logger.debug("Subscription to channel '#{channel}' succeeded") else @logger.debug("Received unhandled message: #{message.data.to_s}") end end websocket.on(:close) do |message| @logger.debug("Closed websocket connection") end end
subscribe(websocket, channel)
click to toggle source
# File lib/bitstamp/websocket.rb, line 58 def subscribe(websocket, channel) subscribe_message = { event: 'pusher:subscribe', data: { channel: channel } } websocket.send(subscribe_message.to_json) end