| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- use tungstenite::client::connect_with_proxy;
- use tungstenite::protocol::WebSocketConfig;
- use tungstenite::Message;
- use std::net::{SocketAddr, IpAddr, Ipv4Addr};
- use serde_json::json;
- use url::Url;
- use std::io::{self, Write};
- #[tokio::test]
- async fn test() {
- let mut stdout = io::stdout();
- let mut stderr = io::stderr();
- let request_url = Url::parse("wss://stream.binance.com:443/ws").unwrap();
- let proxy_address = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 9080);
- let websocket_config = Some(WebSocketConfig {
- max_send_queue: Some(16),
- max_message_size: Some(16 * 1024 * 1024),
- max_frame_size: Some(16 * 1024 * 1024),
- accept_unmasked_frames: false,
- });
- let max_redirects = 5;
- let (mut socket, response) =
- connect_with_proxy(request_url, proxy_address, websocket_config, max_redirects)
- .expect("Can't connect");
- let sub_json = json!({
- "method": "SUBSCRIBE",
- "params":
- [
- "btcusdt@depth5@100ms"
- ],
- "id": 1
- });
- let sub_json_str = sub_json.to_string();
- writeln!(stdout, "subscribe info: {:?}", sub_json_str).unwrap();
- // 订阅深度信息
- socket
- .write_message(Message::Text(sub_json_str))
- .unwrap();
- loop {
- if !socket.can_read() {
- continue;
- }
- let msg = socket.read_message();
- match msg {
- Ok(Message::Text(text)) => {
- writeln!(stdout, "{:?}", text).unwrap();
- }
- Ok(Message::Ping(_)) | Ok(Message::Pong(_)) | Ok(Message::Close(_)) => {
- socket.write_message(Message::Pong(vec![]))
- .unwrap();
- writeln!(stdout, "ping----------pong").unwrap();
- }
- Err(error) => {
- writeln!(stderr, "Error receiving message: {}", error).unwrap();
- break;
- }
- _ => {}
- }
- }
- socket.close(None).unwrap();
- }
|