class BinanceAPI::Stream
Constants
- BASE_ENDPOINT
Attributes
endpoints[R]
stream_type[R]
ws[R]
Public Class Methods
new(endpoints, on_open: nil, on_close: nil, on_error: nil, on_message: nil)
click to toggle source
# File lib/binance_api/stream.rb, line 6 def initialize(endpoints, on_open: nil, on_close: nil, on_error: nil, on_message: nil) raise 'on_open can accept a block only' if !on_open.nil? && !on_open.is_a?(Proc) raise 'on_close can accept a block only' if !on_close.nil? && !on_close.is_a?(Proc) raise 'on_error can accept a block only' if !on_error.nil? && !on_error.is_a?(Proc) raise 'on_data can accept a block only' if !on_message.nil? && !on_message.is_a?(Proc) @endpoints = Array(endpoints).reject(&:nil?).reject(&:empty?) raise 'endpoints cannot be empty' if @endpoints.empty? @on_open = on_open @on_close = on_close @on_error = on_error @on_message = on_message @stream_type = @endpoints.length > 1 ? :combined : :single end
Public Instance Methods
close()
click to toggle source
# File lib/binance_api/stream.rb, line 31 def close ws.close end
start()
click to toggle source
# File lib/binance_api/stream.rb, line 22 def start @ws = WebSocket::Client::Simple.connect "#{BASE_ENDPOINT}#{stream_url}" ws.on :message, &on_message ws.on :open, &on_open ws.on :close, &on_close ws.on :error, &on_error ws end
Protected Instance Methods
combined_url(stream_names)
click to toggle source
# File lib/binance_api/stream.rb, line 47 def combined_url(stream_names) "stream?streams=#{stream_names.join('/')}" end
on_close()
click to toggle source
# File lib/binance_api/stream.rb, line 55 def on_close @on_close || ->(e) { puts "-- websocket close (#{e.inspect})" } end
on_error()
click to toggle source
# File lib/binance_api/stream.rb, line 59 def on_error @on_error || ->(e) { puts "-- error (#{e.inspect})" } end
on_message()
click to toggle source
# File lib/binance_api/stream.rb, line 63 def on_message @on_message || ->(msg) { puts ">> #{msg.data}" } end
on_open()
click to toggle source
# File lib/binance_api/stream.rb, line 51 def on_open @on_open || ->() { puts "-- websocket open (#{url})" } end
single_url(stream_name)
click to toggle source
# File lib/binance_api/stream.rb, line 43 def single_url(stream_name) "ws/#{stream_name}" end
stream_url()
click to toggle source
# File lib/binance_api/stream.rb, line 39 def stream_url stream_type == :combined ? combined_url(endpoints) : single_url(endpoints.first) end