Skip to main content

ccxt_exchanges/binance/ws/
streams.rs

1//! Stream URL building and management functions
2
3#![allow(dead_code)]
4
5/// Binance WebSocket endpoints
6pub const WS_BASE_URL: &str = "wss://stream.binance.com:9443/ws";
7/// Binance testnet WebSocket endpoint
8pub const WS_TESTNET_URL: &str = "wss://testnet.binance.vision/ws";
9
10/// Builds a ticker stream name
11pub fn ticker_stream(symbol: &str) -> String {
12    format!("{}@ticker", symbol.to_lowercase())
13}
14
15/// Builds a mini ticker stream name
16pub fn mini_ticker_stream(symbol: &str) -> String {
17    format!("{}@miniTicker", symbol.to_lowercase())
18}
19
20/// Builds a trade stream name
21pub fn trade_stream(symbol: &str) -> String {
22    format!("{}@trade", symbol.to_lowercase())
23}
24
25/// Builds an aggregated trade stream name
26pub fn agg_trade_stream(symbol: &str) -> String {
27    format!("{}@aggTrade", symbol.to_lowercase())
28}
29
30/// Builds an order book depth stream name
31pub fn orderbook_stream(symbol: &str, levels: u32, update_speed: &str) -> String {
32    if update_speed == "100ms" {
33        format!("{}@depth{}@100ms", symbol.to_lowercase(), levels)
34    } else {
35        format!("{}@depth{}", symbol.to_lowercase(), levels)
36    }
37}
38
39/// Builds a diff order book stream name
40pub fn orderbook_diff_stream(symbol: &str, update_speed: Option<&str>) -> String {
41    if let Some(speed) = update_speed {
42        if speed == "100ms" {
43            format!("{}@depth@100ms", symbol.to_lowercase())
44        } else {
45            format!("{}@depth", symbol.to_lowercase())
46        }
47    } else {
48        format!("{}@depth", symbol.to_lowercase())
49    }
50}
51
52/// Builds a kline stream name
53pub fn kline_stream(symbol: &str, interval: &str) -> String {
54    format!("{}@kline_{}", symbol.to_lowercase(), interval)
55}
56
57/// Builds a mark price stream name
58pub fn mark_price_stream(symbol: &str, use_1s_freq: bool) -> String {
59    if use_1s_freq {
60        format!("{}@markPrice@1s", symbol.to_lowercase())
61    } else {
62        format!("{}@markPrice", symbol.to_lowercase())
63    }
64}
65
66/// Builds a book ticker stream name
67pub fn book_ticker_stream(symbol: &str) -> String {
68    format!("{}@bookTicker", symbol.to_lowercase())
69}
70
71/// Builds an all tickers stream name
72pub fn all_tickers_stream() -> String {
73    "!ticker@arr".to_string()
74}
75
76/// Builds an all mini tickers stream name
77pub fn all_mini_tickers_stream() -> String {
78    "!miniTicker@arr".to_string()
79}
80
81/// Builds a user data stream URL
82pub fn user_data_stream_url(listen_key: &str) -> String {
83    format!("wss://stream.binance.com:9443/ws/{}", listen_key)
84}