Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How do I set credentials using Websocket API? #15

Open
avnerbarr opened this issue Jan 29, 2024 · 2 comments
Open

How do I set credentials using Websocket API? #15

avnerbarr opened this issue Jan 29, 2024 · 2 comments

Comments

@avnerbarr
Copy link

I'm trying to use the Websocket version of the api but I don't see any place to put the credentials

There is a lot of unclarity in the docs and I don't see anything in the examples explaining or showing how this is done for the Websocket side.

here is a trivial snippet which leads to a crash when unwrapping the connection. The error isn't clear as to what the issue is

use binance_spot_connector_rust::{
    http::Credentials,
    market::klines::KlineInterval, market_stream::kline::KlineStream,
    tokio_tungstenite::BinanceWebSocketClient,
};
use env_logger::Builder;
use futures_util::StreamExt;
#[tokio::main]
async fn main() {

    
    let res =  BinanceWebSocketClient::connect_async("wss://testnet.binance.vision/ws-api/v3.").await;
    if res.is_err() {
        println!("{:?}", res.as_ref().err());
    }
    
    let (mut conn, y ) = res.unwrap();
    /// use binance_spot_connector_rust::market_stream::ticker::TickerStream;
///
 let individual_symbol_stream = binance_spot_connector_rust::market_stream::ticker::TickerStream::from_symbol("BTCUSDT");
    conn.subscribe(vec![
        &individual_symbol_stream.into()
    ]
    ).await;
    println!("Hello, world!");
}

Some(Http(Response { status: 404, version: HTTP/1.1, headers: {"content-length": "48", "connection": "close", "date": "Mon, 29 Jan 2024 13:10:39 GMT", "server": "X", "x-mbx-uuid": "656dbd59-91ed-4b67-9d61-88b87ec8a82a", "x-cache": "Error from cloudfront", "via": "1.1 7d30cf029bde247eef16106ceffb39ca.cloudfront.net (CloudFront)", "x-amz-cf-pop": "TLV50-C1", "x-amz-cf-id": "83iERQTXPkgGVJNB7GqEk2X3gjH9HIN2v9hwqF22f_YuaIYmNpxBqA=="}, body: None }))
thread 'main' panicked at src/main.rs:15:30:
called `Result::unwrap()` on an `Err` value: Http(Response { status: 404, version: HTTP/1.1, headers: {"content-length": "48", "connection": "close", "date": "Mon, 29 Jan 2024 13:10:39 GMT", "server": "X", "x-mbx-uuid": "656dbd59-91ed-4b67-9d61-88b87ec8a82a", "x-cache": "Error from cloudfront", "via": "1.1 7d30cf029bde247eef16106ceffb39ca.cloudfront.net (CloudFront)", "x-amz-cf-pop": "TLV50-C1", "x-amz-cf-id": "83iERQTXPkgGVJNB7GqEk2X3gjH9HIN2v9hwqF22f_YuaIYmNpxBqA=="}, body: None })
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Pasted_Image_29_01_2024__15_29
@0xdevgranero
Copy link

have you resolved that yet?Thks

@JaydenElliott
Copy link

JaydenElliott commented May 16, 2024

Hi, I don't think the problem is authentication here. You received a 404, implying the endpoint wasn't found. Your websocket url has a fullstop . at the end .

For future reference, all ws endpoints requiring any sort of authentication will take a listen key as an argument. E.g.

        // get listen key
        let client = BinanceHttpClient::default().credentials(self.exchange_credentials.clone());
        let listen_key_response = client
            .send(margin_stream::new_listen_key())
            .await?
            .into_body_str()
            .await?;
        let listen_key = serde_json::from_str::<ListenKeyResponse>(&listen_key_response)?;

        // setup websocket
        let (mut user_data_stream_connection, _) = BinanceWebSocketClient::connect_async_default()
            .await
            .expect("Failed to connect");
        user_data_stream_connection
            .subscribe(vec![&UserDataStream::new(&listen_key.listen_key).into()]) // <---  adding listen key here
            .await;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants