5个版本 (1个稳定版)
1.0.0 | 2021年2月12日 |
---|---|
0.4.0 | 2020年2月16日 |
0.3.0 | 2020年2月11日 |
0.2.0 | 2020年2月11日 |
0.1.0 | 2020年2月9日 |
#8 in #binance
每月32次下载
110KB
1.5K SLoC
tokio-binance
Binance非官方异步客户端。
示例
在您的 Cargo.toml
中添加以下内容
[dependencies]
tokio-binance = "1.0"
serde_json = "1.0.62"
tokio = { version = "1.2.0", features = ["macros", "time"] }
客户端
use tokio_binance::{AccountClient, BINANCE_US_URL, ID};
use serde_json::Value;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = AccountClient::connect("<api-key>", "<secret-key>", BINANCE_US_URL)?;
let response = client
.get_order("BNBUSDT", ID::ClientOId("<uuid>"))
// optional: processing time for request; default is 5000, can't be above 60000.
.with_recv_window(8000)
//
.json::<Value>()
.await?;
Ok(())
}
WebSocket
use tokio_binance::*;
use tokio::time::{delay_for, Duration};
use serde_json::Value;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = UserDataClient::connect("<api-key>", BINANCE_US_URL)?;
let value = client.start_stream().json::<Value>().await?;
let listen_key = value["listenKey"].as_str().unwrap();
let listen_key_copy = listen_key.to_string();
tokio::spawn(async move {
loop {
delay_for(Duration::from_secs(30*60)).await;
if let Err(e) = client.keep_alive(&listen_key_copy).text().await {
eprintln!("{}", e);
return
}
}
});
let channel = Channel::UserData(listen_key);
let mut stream = WebSocketStream::connect(channel, BINANCE_US_WSS_URL).await?;
while let Some(value) = stream.json::<Value>().await? {
if channel == value["stream"] {
println!("{}", serde_json::to_string_pretty(&value)?);
}
}
Ok(())
}
许可
在以下任一许可下使用
- Apache License, Version 2.0 (LICENSE-APACHE 或 http://apache.org/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
贡献
除非您明确声明,否则您提交的任何贡献,按照Apache-2.0许可定义的,应按上述方式双重许可,不附加任何额外条款或条件。
依赖关系
~8–22MB
~358K SLoC