use anyhow::{Context, Result};
use tokio::time::{Duration, sleep};
use tracing::info;
use binance_sdk::alpha::{
AlphaWsStreams,
websocket_streams::{
PartialDepthStreamIntervalEnum, PartialDepthStreamLevelsEnum, PartialDepthStreamParams,
},
};
use binance_sdk::config::ConfigurationWebsocketStreams;
use binance_sdk::logger;
#[tokio::main]
async fn main() -> Result<()> {
logger::init();
let ws_streams_conf = ConfigurationWebsocketStreams::builder().build()?;
let ws_streams_client = AlphaWsStreams::production(ws_streams_conf);
let connection = ws_streams_client
.connect()
.await
.context("Failed to connect to WebSocket Streams")?;
let params = PartialDepthStreamParams::builder(
"alpha_116usdt".to_string(),
PartialDepthStreamLevelsEnum::Levels5,
PartialDepthStreamIntervalEnum::Interval0ms,
)
.build()?;
let stream = connection
.partial_depth_stream(params)
.await
.context("Failed to subscribe to the stream")?;
stream.on_message(|data| {
info!("{:?}", data);
});
sleep(Duration::from_secs(20)).await;
connection
.disconnect()
.await
.context("Failed to disconnect WebSocket client")?;
Ok(())
}