class Binance::Client::WebSocketFuture

Constants

BASE_URL

Public: String base url for WebSocket client to use

Public Instance Methods

agg_trade(symbol:, methods:) click to toggle source

Public: Create an Aggregate Trade stream

:symbol - The String symbol the stream will listen to

:methods - The Hash which contains the event handler methods to pass to

         the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 271
def agg_trade(symbol:, methods:)
        single stream: { symbol: symbol, type: 'aggTrade' }, methods: methods
end
all_market_ticker(methods:) click to toggle source

Public: Create a Ticker stream for all symbols

:methods - The Hash which contains the event handler methods to pass to

         the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 330
def all_market_ticker(methods:)
        single stream: { symbol: '!ticker', type: 'arr' }, methods: methods
end
diff_depth(symbol:, methods:) click to toggle source

Public: Create a Diff Depth stream

:symbol - The String symbol the stream will listen to

:methods - The Hash which contains the event handler methods to pass to

         the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 362
def diff_depth(symbol:, methods:)
        single stream: { symbol: symbol, type: 'depth' }, methods: methods
end
kline(symbol:, interval:, methods:) click to toggle source

Public: Create an Kline stream

:symbol - The String symbol the stream will listen to

:interval - The String interval the stream will update with. The

intervals that may be used can be found in the Binance API
docs.

:methods - The Hash which contains the event handler methods to pass to

         the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 303
def kline(symbol:, interval:, methods:)
        single stream: { symbol: symbol, type: 'kline', interval: interval },
        methods: methods
end
multi(streams:, methods:) click to toggle source

Public: Create multiple WebSocket streams

:streams - The Array of Hashes used to define the stream. Each Hash can

         have the following keys:
:symbol   - The String symbol the stream will listen to
:type     - The String type of stream to listen to
:level    - The String level to use for the depth stream (optional)
:interval - The String interval to use for the kline stream (optional)

:methods - The Hash which contains the event handler methods to pass to

         the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 255
def multi(streams:, methods:)
        names = streams.map { |stream| stream_url(stream) }
        create_stream("#{BASE_URL}/stream?streams=#{names.join('/')}",
        methods: methods)
end
partial_book_depth(symbol:, level:, methods:) click to toggle source

Public: Create an Partial Book Depth stream

:symbol - The String symbol the stream will listen to

:level - The String interval the stream will update with. The intervals

that may be used can be found in the Binance API docs.

:methods - The Hash which contains the event handler methods to pass to

         the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 347
def partial_book_depth(symbol:, level:, methods:)
        single stream: { symbol: symbol, type: 'depth', level: level },
        methods: methods
end
single(stream:, methods:) click to toggle source

Public: Create a single WebSocket stream

:stream - The Hash used to define the stream

:symbol   - The String symbol to listen to
:type     - The String type of stream to listen to
:level    - The String level to use for the depth stream (optional)
:interval - The String interval to use for the kline stream (optional)

:methods - The Hash which contains the event handler methods to pass to

         the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 235
def single(stream:, methods:)
        create_stream("#{BASE_URL}/ws/#{stream_url(stream)}",
        methods: methods)
end
ticker(symbol:, methods:) click to toggle source

Public: Create a Ticker stream

:symbol - The String symbol the stream will listen to

:methods - The Hash which contains the event handler methods to pass to

         the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 318
def ticker(symbol:, methods:)
        single stream: { symbol: symbol, type: 'ticker' }, methods: methods
end
trade(symbol:, methods:) click to toggle source

Public: Create a Trade stream

:symbol - The String symbol the stream will listen to

:methods - The Hash which contains the event handler methods to pass to

         the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 285
def trade(symbol:, methods:)
        single stream: { symbol: symbol, type: 'trade' }, methods: methods
end
user_data(listen_key:, methods:) click to toggle source

Public: Create a User Data stream

listen_key - The String key the stream will listen to, attained by

interacting with the REST API userDataStream endpoint

:methods - The Hash which contains the event handler methods to pass to

         the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 377
def user_data(listen_key:, methods:)
        create_stream "#{BASE_URL}/ws/#{listen_key}", methods: methods
end

Private Instance Methods

attach_methods(websocket, methods) click to toggle source

Internal: Iterate through methods passed and add them to the WebSocket

websocket - The Faye::WebSocket::Client to apply methods to

methods - The Hash which contains the event handler methods to pass to

the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 421
def attach_methods(websocket, methods)
        methods.each_pair do |key, method|
                websocket.on(key) { |event| method.call(event) }
        end
end
create_stream(url, methods:) click to toggle source

Internal: Initialize and return a Faye::WebSocket::Client

url - The String url that the WebSocket should try to connect to

:methods - The Hash which contains the event handler methods to pass to

         the WebSocket client
:open    - The Proc called when a stream is opened (optional)
:message - The Proc called when a stream receives a message
:error   - The Proc called when a stream receives an error (optional)
:close   - The Proc called when a stream is closed (optional)
# File lib/binance/client/websocket.rb, line 406
def create_stream(url, methods:)
        Faye::WebSocket::Client.new(url)
        .tap { |ws| attach_methods(ws, methods) }
end
stream_url(symbol:, type:, level: '', interval: '') click to toggle source

Internal: Create a valid URL for a WebSocket to use

:symbol - The String symbol to listen to :type - The String type the stream will listen to :level - The String level to use for the depth stream (optional) :interval - The String interval to use for the kline stream (optional)

# File lib/binance/client/websocket.rb, line 389
def stream_url(symbol:, type:, level: '', interval: '')
        "#{symbol.downcase}@#{type}".tap do |url|
                url << level
                url << "_#{interval}" unless interval.empty?
        end
end