فهرست منبع

bitmart bug 修复

hl 1 سال پیش
والد
کامیت
a804a9601a
3فایلهای تغییر یافته به همراه44 افزوده شده و 39 حذف شده
  1. 1 1
      exchanges/src/bitmart_swap_ws.rs
  2. 38 31
      exchanges/src/socket_tool.rs
  3. 5 7
      exchanges/tests/bitmart_swap_test.rs

+ 1 - 1
exchanges/src/bitmart_swap_ws.rs

@@ -340,7 +340,7 @@ impl BitMartSwapWs {
     //数据解析
     pub async fn ok_text(text: String) -> ResponseData
     {
-        trace!("原始数据:{}", text);
+        // trace!("原始数据:{}", text);
         let mut res_data = ResponseData::new("".to_string(), 200, "success".to_string(), Value::Null);
         let json_value: Value = serde_json::from_str(&text).unwrap();
 

+ 38 - 31
exchanges/src/socket_tool.rs

@@ -31,16 +31,16 @@ pub struct AbstractWsMode {}
 
 impl AbstractWsMode {
     pub async fn ws_connected<T, PI, PO, F, B, Future>(write_to_socket_rx_arc: Arc<Mutex<UnboundedReceiver<Message>>>,
-                                                    is_first_login: bool,
-                                                    label: String,
-                                                    is_shutdown_arc: Arc<AtomicBool>,
-                                                    handle_function: &F,
-                                                    subscribe_array: Vec<String>,
-                                                    ws_stream: WebSocketStream<MaybeTlsStream<TcpStream>>,
-                                                    message_text: T,
-                                                    message_ping: PI,
-                                                    message_pong: PO,
-                                                    message_binary: B)
+                                                       is_first_login: bool,
+                                                       label: String,
+                                                       is_shutdown_arc: Arc<AtomicBool>,
+                                                       handle_function: &F,
+                                                       subscribe_array: Vec<String>,
+                                                       ws_stream: WebSocketStream<MaybeTlsStream<TcpStream>>,
+                                                       message_text: T,
+                                                       message_ping: PI,
+                                                       message_pong: PO,
+                                                       message_binary: B)
         where T: Fn(String) -> Option<ResponseData> + Copy,
               PI: Fn(Vec<u8>) -> Option<ResponseData> + Copy,
               PO: Fn(Vec<u8>) -> Option<ResponseData> + Copy,
@@ -86,13 +86,13 @@ impl AbstractWsMode {
 
                     let code = data.code.clone();
 
-                    if code == 200 {
-                        let mut data_c = data.clone();
-                        data_c.ins = Instant::now();
-                        data_c.time = Utc::now().timestamp_millis();
-
-                        handle_function(data_c).await;
-                    }
+                    // if code == 200 {
+                    //     let mut data_c = data.clone();
+                    //     data_c.ins = Instant::now();
+                    //     data_c.time = Utc::now().timestamp_millis();
+                    //
+                    //     handle_function(data_c).await;
+                    // }
 
                     /*
                         200 -正确返回
@@ -103,6 +103,13 @@ impl AbstractWsMode {
                        -302 -客户端收到服务器心跳自定义,需要响应自定义
                     */
                     match code {
+                        200 => {
+                            let mut data_c = data.clone();
+                            data_c.ins = Instant::now();
+                            data_c.time = Utc::now().timestamp_millis();
+
+                            handle_function(data_c).await;
+                        }
                         -200 => {
                             //登录成功
                             info!("ws登录成功:{:?}", data);
@@ -158,16 +165,16 @@ impl AbstractWsMode {
 
     //创建链接
     pub async fn ws_connect_async<T, PI, PO, F, B, Future>(is_shutdown_arc: Arc<AtomicBool>,
-                                                        handle_function: F,
-                                                        address_url: String,
-                                                        is_first_login: bool,
-                                                        label: String,
-                                                        subscribe_array: Vec<String>,
-                                                        write_to_socket_rx_arc: Arc<Mutex<UnboundedReceiver<Message>>>,
-                                                        message_text: T,
-                                                        message_ping: PI,
-                                                        message_pong: PO,
-                                                        message_binary: B)
+                                                           handle_function: F,
+                                                           address_url: String,
+                                                           is_first_login: bool,
+                                                           label: String,
+                                                           subscribe_array: Vec<String>,
+                                                           write_to_socket_rx_arc: Arc<Mutex<UnboundedReceiver<Message>>>,
+                                                           message_text: T,
+                                                           message_ping: PI,
+                                                           message_pong: PO,
+                                                           message_binary: B)
         where T: Fn(String) -> Option<ResponseData> + Copy,
               PI: Fn(Vec<u8>) -> Option<ResponseData> + Copy,
               PO: Fn(Vec<u8>) -> Option<ResponseData> + Copy,
@@ -233,10 +240,10 @@ impl AbstractWsMode {
     }
     //数据解析
     pub fn analysis_message<T, PI, PO, B>(message: Result<Message, Error>,
-                                       message_text: T,
-                                       message_ping: PI,
-                                       message_pong: PO,
-                                       message_binary: B) -> Option<ResponseData>
+                                          message_text: T,
+                                          message_ping: PI,
+                                          message_pong: PO,
+                                          message_binary: B) -> Option<ResponseData>
         where T: Fn(String) -> Option<ResponseData>,
               PI: Fn(Vec<u8>) -> Option<ResponseData>,
               PO: Fn(Vec<u8>) -> Option<ResponseData>,

+ 5 - 7
exchanges/tests/bitmart_swap_test.rs

@@ -8,8 +8,6 @@ use tracing::trace;
 use exchanges::bitmart_swap_rest::BitMartSwapRest;
 use exchanges::bitmart_swap_ws::{BitMartSwapLogin, BitMartSwapSubscribeType, BitMartSwapWs, BitMartSwapWsType};
 
-use exchanges::htx_swap_rest::HtxSwapRest;
-use exchanges::htx_swap_ws::{HtxSwapLogin, HtxSwapSubscribeType, HtxSwapWs, HtxSwapWsType};
 use exchanges::proxy;
 use exchanges::response_base::ResponseData;
 
@@ -85,14 +83,14 @@ async fn ws_custom_subscribe() {
         api_memo: API_MEMO.to_string(),
     };
     let t1 = tokio::spawn(async move {
-        let mut ws = get_ws(Option::from(param), BitMartSwapWsType::Private);
+        let mut ws = get_ws(Option::from(param), BitMartSwapWsType::Public);
         ws.set_symbols(vec!["BTC_USDT".to_string(), "ETC_USDT".to_string()]);
         ws.set_subscribe(vec![
-            // BitMartSwapSubscribeType::PuFuturesDepth,
+            BitMartSwapSubscribeType::PuFuturesDepth,
 
-            BitMartSwapSubscribeType::PrFuturesOrders,
-            BitMartSwapSubscribeType::PrFuturesPositions,
-            BitMartSwapSubscribeType::PrFuturesBalances,
+            // BitMartSwapSubscribeType::PrFuturesOrders,
+            // BitMartSwapSubscribeType::PrFuturesPositions,
+            // BitMartSwapSubscribeType::PrFuturesBalances,
         ]);
         //链接
         let bool_v3_clone = Arc::clone(&is_shutdown_arc);