|
|
@@ -17,32 +17,49 @@ const SECRET_KEY: &str = "";
|
|
|
//ws-订阅公共频道信息
|
|
|
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
|
|
async fn ws_custom_subscribe() {
|
|
|
- global::log_utils::init_log_with_trace();
|
|
|
+ // global::log_utils::init_log_with_trace();
|
|
|
+ //
|
|
|
+ // let mut bool_v1 = Arc::new(AtomicBool::new(true));
|
|
|
+ // let mut btree_map: BTreeMap<String, String> = BTreeMap::new();
|
|
|
+ // btree_map.insert("access_key".to_string(), ACCESS_KEY.to_string());
|
|
|
+ // btree_map.insert("secret_key".to_string(), SECRET_KEY.to_string());
|
|
|
+ // let (tx, mut rx) = channel(1024);
|
|
|
+ // let mut ws = get_ws(btree_map, tx);
|
|
|
+ // ws.set_subscribe(vec![
|
|
|
+ // GateSubscribeType::PuFuturesCandlesticks,
|
|
|
+ // GateSubscribeType::PuFuturesTrades,
|
|
|
+ // GateSubscribeType::PuFuturesOrderBook,
|
|
|
+ //
|
|
|
+ // GateSubscribeType::PrFuturesPositions("".to_string()),
|
|
|
+ // ]);
|
|
|
+ // let t1 = tokio::spawn(async move {
|
|
|
+ // ws.custom_subscribe(bool_v1, vec!["BTC_USDT".to_string()]).await;
|
|
|
+ // });
|
|
|
+ // let t2 = tokio::spawn(async move {
|
|
|
+ // loop {
|
|
|
+ // if let Ok(received) = rx.try_recv() {
|
|
|
+ // trace!( "age: {:?}", received);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // try_join!(t1,t2).unwrap();
|
|
|
+
|
|
|
|
|
|
- let mut bool_v1 = Arc::new(AtomicBool::new(true));
|
|
|
- let mut btree_map: BTreeMap<String, String> = BTreeMap::new();
|
|
|
- btree_map.insert("access_key".to_string(), ACCESS_KEY.to_string());
|
|
|
- btree_map.insert("secret_key".to_string(), SECRET_KEY.to_string());
|
|
|
- let (tx, mut rx) = channel(1024);
|
|
|
- let mut ws = get_ws(btree_map, tx);
|
|
|
- ws.set_subscribe(vec![
|
|
|
- GateSubscribeType::PuFuturesCandlesticks,
|
|
|
- GateSubscribeType::PuFuturesTrades,
|
|
|
- GateSubscribeType::PuFuturesOrderBook,
|
|
|
|
|
|
- GateSubscribeType::PrFuturesPositions("".to_string()),
|
|
|
- ]);
|
|
|
- let t1 = tokio::spawn(async move {
|
|
|
- ws.custom_subscribe(bool_v1, vec!["BTC_USDT".to_string()]).await;
|
|
|
- });
|
|
|
- let t2 = tokio::spawn(async move {
|
|
|
- loop {
|
|
|
- if let Ok(received) = rx.try_recv() {
|
|
|
- trace!( "age: {:?}", received);
|
|
|
- }
|
|
|
+ let json_str = r#"{"name": "Alice", "age": 30}"#;
|
|
|
+
|
|
|
+ // 解析 JSON 字符串并将其转换为一个 Rust 结构体
|
|
|
+ let parsed_data: Result<serde_json::Value, serde_json::Error> = serde_json::from_str(json_str);
|
|
|
+
|
|
|
+ match parsed_data {
|
|
|
+ Ok(data) => {
|
|
|
+ println!("Name: {}", data["name"]);
|
|
|
+ println!("Age: {}", data["age"]);
|
|
|
+ }
|
|
|
+ Err(e) => {
|
|
|
+ println!("Failed to parse JSON: {}", e);
|
|
|
}
|
|
|
- });
|
|
|
- try_join!(t1,t2).unwrap();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|