|
|
@@ -1,6 +1,4 @@
|
|
|
use std::collections::{BTreeMap};
|
|
|
-use std::{io};
|
|
|
-use std::io::{Write};
|
|
|
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
|
|
|
use tokio::sync::mpsc::Sender;
|
|
|
use serde_json::{json, Value};
|
|
|
@@ -293,34 +291,49 @@ impl GateSwapWs {
|
|
|
.unwrap();
|
|
|
}
|
|
|
/*****消息溜***/
|
|
|
- let mut stdout = io::stdout();
|
|
|
+ let mut start_ping = chrono::Utc::now().timestamp_millis();
|
|
|
loop {
|
|
|
let msg = web_socket.read_message();
|
|
|
match msg {
|
|
|
Ok(Message::Text(text)) => {
|
|
|
let res_data = Self::ok_text(label.to_string(), text);
|
|
|
if res_data.code == "-200" {
|
|
|
- writeln!(stdout, "订阅成功:{:?}", res_data.data).unwrap();
|
|
|
+ trace!("订阅成功:{:?}", res_data.data);
|
|
|
} else {
|
|
|
self.sender.send(res_data).await.unwrap();
|
|
|
+
|
|
|
+ //主动ping 服务器
|
|
|
+ let new_time = chrono::Utc::now().timestamp_millis();
|
|
|
+ // let tr = format!("判断-ping {}--{},{},{}",new_time,start_ping,(new_time - start_ping), (new_time - start_ping) > 10000);
|
|
|
+ // trace!(tr);
|
|
|
+ if (new_time - start_ping) > 10000 {
|
|
|
+ let t = chrono::Utc::now().timestamp();
|
|
|
+ let ping_str = serde_json::json!({
|
|
|
+ "time" :t, "channel" : "futures.ping"
|
|
|
+ });
|
|
|
+ let _ = web_socket.write_message(Message::Ping(Vec::from(ping_str.to_string())));
|
|
|
+ start_ping = new_time;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
Ok(Message::Ping(s)) => {
|
|
|
- writeln!(stdout, "Ping-响应--{:?}", String::from_utf8(s.clone())).unwrap();
|
|
|
+ trace!( "Ping-响应--{:?}", String::from_utf8(s.clone()));
|
|
|
let _ = web_socket.write_message(Message::Pong(Vec::from("pong")));
|
|
|
- writeln!(stdout, "回应-pong---{:?}", String::from_utf8(s.clone())).unwrap();
|
|
|
+ trace!( "回应-pong---{:?}", String::from_utf8(s.clone()));
|
|
|
}
|
|
|
Ok(Message::Pong(s)) => {
|
|
|
// trace!("Pong-响应--{:?}", String::from_utf8(s));
|
|
|
- writeln!(stdout, "Pong-响应--{:?}", String::from_utf8(s.clone())).unwrap();
|
|
|
+ trace!("Pong-响应--{:?}", String::from_utf8(s.clone()));
|
|
|
}
|
|
|
Ok(Message::Close(_)) => {
|
|
|
// trace!("socket 关闭: ");
|
|
|
- writeln!(stdout, "Close-响应").unwrap();
|
|
|
+ trace!( "Close-响应");
|
|
|
+ break;
|
|
|
}
|
|
|
Err(error) => {
|
|
|
// trace!("Error receiving message: {}", error);
|
|
|
- writeln!(stdout, "Err-响应{}", error).unwrap();
|
|
|
+ trace!( "Err-响应{}", error);
|
|
|
break;
|
|
|
}
|
|
|
_ => {}
|
|
|
@@ -331,7 +344,7 @@ impl GateSwapWs {
|
|
|
|
|
|
//非代理
|
|
|
async fn subscription(&self, mut web_socket: WebSocket<AutoStream>,
|
|
|
- subscription: Vec<Value>)
|
|
|
+ subscription: Vec<Value>)
|
|
|
{
|
|
|
let label = self.label.clone();
|
|
|
/*****订阅***/
|
|
|
@@ -340,14 +353,13 @@ impl GateSwapWs {
|
|
|
.unwrap();
|
|
|
}
|
|
|
/*****消息溜***/
|
|
|
- let mut stdout = io::stdout();
|
|
|
loop {
|
|
|
let msg = web_socket.read_message();
|
|
|
match msg {
|
|
|
Ok(Message::Text(text)) => {
|
|
|
let res_data = Self::ok_text(label.to_string(), text);
|
|
|
if res_data.code == "-200" {
|
|
|
- writeln!(stdout, "订阅成功:{:?}", res_data.data).unwrap();
|
|
|
+ trace!( "订阅成功:{:?}", res_data.data);
|
|
|
} else {
|
|
|
self.sender.send(res_data).await.unwrap();
|
|
|
}
|
|
|
@@ -360,6 +372,7 @@ impl GateSwapWs {
|
|
|
}
|
|
|
Ok(Message::Close(_)) => {
|
|
|
trace!("socket 关闭: ");
|
|
|
+ break;
|
|
|
}
|
|
|
Err(error) => {
|
|
|
trace!("Error receiving message: {}", error);
|