【问题标题】:Error establishing connection to Binance via Tungstenite Websocket API通过 Tungstenite Websocket API 建立与 Binance 的连接时出错
【发布时间】:2022-10-23 19:50:57
【问题描述】:

我正在尝试使用以下代码建立与 binance websocket 服务器的连接:

use tungstenite::{connect, Message};
use url::Url;

fn main() {
    let (mut socket, response) =
        connect(Url::parse("wss://stream.binance.com:9443/ws/BNBBTC@aggTrade").unwrap()).expect("Can't connect");

    println!("Connected to the server");
    println!("Response HTTP code: {}", response.status());
    println!("Response contains the following headers:");
    for (ref header, _value) in response.headers() {
        println!("* {}", header);
    }
}

Cargo.toml 包含:

[dependencies]
tungstenite = "0.17.3"
url = "2.3.1"

我收到错误:

thread 'main' panicked at 'Can't connect: Http(Response { status: 400, version: HTTP/1.1, headers: {"server": "awselb/2.0", "date": "Sat, 22 Oct 2022 20:23:40 GMT", "content-type": "text/html", "content-length": "220", "connection": "close"}, body: None })', src/main.rs:6:90
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: untitled12::main
             at ./src/main.rs:6:9
   5: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

这个错误背后的原因是什么?我错过了什么?这似乎是一个糟糕的请求错误,但是根据binance websocket API,我的请求应该是格式正确的

【问题讨论】:

  • connect(Url::parse("ws://stream.binance.com:9443/ws").unwrap()).expect("Can't connect"); 行仍然感到恐慌
  • 我尝试了此链接中提到的另一个请求:stackoverflow.com/a/65750685/4645121,它仍然失败。

标签: rust websocket


【解决方案1】:

默认情况下,钨钢does not have TLS enabled,所以我必须在Cargo.toml中启用:

tungstenite = { version = "0.17.3", features = ["native-tls"] }

【讨论】:

    猜你喜欢
    • 2021-06-21
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 2013-04-02
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多