|
@@ -1,77 +0,0 @@
|
|
|
-use std::collections::BTreeMap;
|
|
|
|
|
-use std::future::Future;
|
|
|
|
|
-use std::io;
|
|
|
|
|
-use std::io::Stdout;
|
|
|
|
|
-use serde_json::json;
|
|
|
|
|
-use crate::response_base::ResponseData;
|
|
|
|
|
-use crate::ws_tool::SocketTool;
|
|
|
|
|
-
|
|
|
|
|
-pub struct BinanceExc {
|
|
|
|
|
- url: String,
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-impl BinanceExc {
|
|
|
|
|
- pub fn new(is_colo: bool) -> BinanceExc {
|
|
|
|
|
- let mut base_url = String::from("");
|
|
|
|
|
- if is_colo {
|
|
|
|
|
- base_url = "wss://stream.binance.com:443/ws".to_string()
|
|
|
|
|
- } else {
|
|
|
|
|
- base_url = "wss://stream.binance.com:443/ws".to_string()
|
|
|
|
|
- }
|
|
|
|
|
- BinanceExc { url: base_url }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //深度-不需要认证
|
|
|
|
|
- pub(crate) fn binance_kline<F, Fut>(&self, b_array: Vec<&str>, parse_fn: F)
|
|
|
|
|
- where
|
|
|
|
|
- F: Fn(ResponseData) -> Fut + 'static + Send + Sync,
|
|
|
|
|
- Fut: Future<Output=()> + Send + 'static,
|
|
|
|
|
- {
|
|
|
|
|
- //订阅信息拼接
|
|
|
|
|
- let mut params = vec![];
|
|
|
|
|
- for item in &b_array {
|
|
|
|
|
- let mut b_name = item.to_lowercase();
|
|
|
|
|
- b_name = format!("{}@{}", b_name, "kline_1s");
|
|
|
|
|
- params.push(b_name);
|
|
|
|
|
- }
|
|
|
|
|
- self.binance_run(b_array, params, parse_fn);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- fn binance_run<F, Fut>(&self, b_array: Vec<&str>, params: Vec<String>, parse_fn: F)
|
|
|
|
|
- where
|
|
|
|
|
- F: Fn(ResponseData) -> Fut + 'static + Send + Sync,
|
|
|
|
|
- Fut: Future<Output=()> + Send + 'static,
|
|
|
|
|
- {
|
|
|
|
|
-
|
|
|
|
|
- // 币安----socket
|
|
|
|
|
- let subscription = json!({
|
|
|
|
|
- "method": "SUBSCRIBE",
|
|
|
|
|
- "params":params,
|
|
|
|
|
- "id": 1
|
|
|
|
|
- });
|
|
|
|
|
- let mut btree_map: BTreeMap<String, String> = BTreeMap::new();
|
|
|
|
|
- btree_map.insert("lable".parse().unwrap(), "binance".parse().unwrap());//产品Id
|
|
|
|
|
- let biance_socke = SocketTool::new("wss://stream.binance.com:443/ws",
|
|
|
|
|
- false,
|
|
|
|
|
- btree_map,
|
|
|
|
|
- subscription,
|
|
|
|
|
- );
|
|
|
|
|
- biance_socke.run(Self::ok_text,
|
|
|
|
|
- parse_fn);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- fn ok_text(text: String) -> ResponseData
|
|
|
|
|
- {
|
|
|
|
|
- println!("数据组装{:?}",text);
|
|
|
|
|
- let res_data = ResponseData::new("0".to_string(), "success".to_string(), text);
|
|
|
|
|
- res_data
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- fn ok_ping(s: Vec<u8>) {
|
|
|
|
|
- println!("ok_ping{:?}", s)
|
|
|
|
|
- }
|
|
|
|
|
- fn ok_pong(s: Vec<u8>) {
|
|
|
|
|
- println!("ok_pong{:?}", s)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|