推送客户端与连接
连接
签名
pub async fn connect(client: &Arc<PushClient>) -> Result<(), String>
说明
建立 TCP/TLS 连接,使用 RSA 签名完成鉴权,启动读写任务并等待服务端 CONNECTED,随后启动心跳任务。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| client | &Arc<PushClient> | 必填 | 无 |
返回
PushClient:Result<(), String>.
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_connect(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = connect(push).await.map_err(|e| TigerError::Config(e))?;
Ok(())
}
返回示例
断开连接
签名
pub fn disconnect(&self)
说明
尽力发送 DISCONNECT 帧,将状态设为断开,停止后台任务并触发 on_disconnect 回调。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| none | - | 必填 | 无 |
返回
PushClient:(). 成功时无响应字段。.
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_disconnect(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = push.disconnect();
Ok(())
}
返回示例
获取连接状态
签名
pub fn state(&self) -> ConnectionState
说明
读取当前连接状态快照,返回 Disconnected、Connecting 或 Connected。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| none | - | 必填 | 无 |
返回
PushClient:ConnectionState.
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_state(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = push.state();
Ok(())
}
返回示例
设置回调
签名
pub fn set_callbacks(&self, cb: Callbacks)
说明
原子替换客户端的整组行情、账户和连接状态回调;未设置字段保持 None。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| cb | Callbacks | 必填 | 无 |
返回
()
Callbacks 结构体字段
| 回调字段 | 类型签名 | 说明 |
|---|---|---|
| on_quote | Option<fn(QuoteData)> | 股票基本行情变动 |
| on_quote_bbo | Option<fn(QuoteData)> | 股票最优买卖价行情 |
| on_option | Option<fn(QuoteData)> | 期权行情变动 |
| on_future | Option<fn(QuoteData)> | 期货行情变动 |
| on_depth | Option<fn(QuoteDepthData)> | 深度盘口数据 |
| on_tick | Option<fn(TradeTickData)> | 逐笔成交 |
| on_full_tick | Option<fn(TickData)> | 全量逐笔数据 |
| on_kline | Option<fn(KlineData)> | 分钟 K 线推送 |
| on_stock_top | Option<fn(StockTopData)> | 股票榜单推送 |
| on_option_top | Option<fn(OptionTopData)> | 期权榜单推送 |
| on_asset | Option<fn(AssetData)> | 资产变动(每 5 秒全量快照) |
| on_position | Option<fn(PositionData)> | 持仓变动(每 5 秒全量快照) |
| on_order | Option<fn(OrderStatusData)> | 订单状态变动 |
| on_transaction | Option<fn(OrderTransactionData)> | 订单成交明细 |
| on_connect | Option<fn()> | 连接成功 |
| on_disconnect | Option<fn()> | 断开连接 |
| on_error | Option<fn(String)> | 错误通知 |
| on_kickout | Option<fn(String)> | 被踢下线 |
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_set_callbacks(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let cb = Callbacks {
on_quote: Some(|data| {
println!("行情变动: symbol={}, latest_price={}", data.symbol, data.latest_price);
}),
on_order: Some(|data| {
println!("订单变动: id={}, status={}", data.id, data.status);
}),
on_asset: Some(|data| {
println!("资产变动: account={}, net_liquidation={}", data.account, data.net_liquidation);
}),
on_position: Some(|data| {
println!("持仓变动: symbol={}, quantity={}", data.symbol, data.position_qty);
}),
on_connect: Some(|| {
println!("已连接");
}),
on_disconnect: Some(|| {
println!("已断开");
}),
..Callbacks::default()
};
push.set_callbacks(cb);
Ok(())
}
返回示例
发送心跳
签名
pub fn send_heartbeat(&self) -> bool
说明
构造并写入一个 Protobuf 心跳请求;仅表示本地发送通道接受帧,不等待服务器确认。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| none | - | 必填 | 无 |
返回
PushClient:bool. 返回bool:仅表示协议帧是否写入本地发送通道,不表示服务端已接受。.
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_send_heartbeat(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = push.send_heartbeat();
Ok(())
}
返回示例
处理消息
签名
pub fn handle_message(&self, data: &[u8])
说明
解码一个 varint32 长度前缀的 Protobuf 响应帧,并按命令和数据类型分派到已注册回调;主要供测试或自定义传输使用。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| data | &[u8] | 必填 | 无 |
返回
PushClient:(). 成功时无响应字段。.
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_handle_message(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = push.handle_message(&[]);
Ok(())
}
返回示例
Updated 8 days ago
Did this page help you?
