推送客户端与连接

连接

签名


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::push::pb::{AssetData, OrderStatusData, PositionData, QuoteData};

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(())

}

返回示例

无同步服务端响应。成功仅表示连接流程完成并收到 CONNECTED


断开连接

签名


pub fn disconnect(&self)

说明

尽力发送 DISCONNECT 帧,将状态设为断开,停止后台任务并触发 on_disconnect 回调。

参数

参数Rust 类型必填性/条件SDK 默认值
none-Rust 类型必填

返回

  • 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

说明

读取当前连接状态快照,返回 DisconnectedConnectingConnected

参数

参数Rust 类型必填性/条件SDK 默认值
none-Rust 类型必填

返回

  • 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 默认值
cbCallbacksRust 类型必填

返回

()

Callbacks 结构体字段

回调字段类型签名说明
on_quote/on_quote_bbo/on_option/on_futureOption<Arc<dyn Fn(QuoteData) + Send + Sync>>股票、最优买卖价、期权或期货行情变动
on_depthOption<Arc<dyn Fn(QuoteDepthData) + Send + Sync>>盘口数据
on_tickOption<Arc<dyn Fn(TradeTickData) + Send + Sync>>逐笔成交
on_full_tickOption<Arc<dyn Fn(TickData) + Send + Sync>>全量逐笔数据
on_klineOption<Arc<dyn Fn(KlineData) + Send + Sync>>分钟 K 线推送
on_stock_topOption<Arc<dyn Fn(StockTopData) + Send + Sync>>股票榜单推送
on_option_topOption<Arc<dyn Fn(OptionTopData) + Send + Sync>>期权榜单推送
on_assetOption<Arc<dyn Fn(AssetData) + Send + Sync>>资产变动(每 5 秒全量快照)
on_positionOption<Arc<dyn Fn(PositionData) + Send + Sync>>持仓变动(每 5 秒全量快照)
on_orderOption<Arc<dyn Fn(OrderStatusData) + Send + Sync>>订单状态变动
on_transactionOption<Arc<dyn Fn(OrderTransactionData) + Send + Sync>>订单成交明细
on_connect/on_disconnectOption<Arc<dyn Fn() + Send + Sync>>连接成功/断开
on_error/on_kickoutOption<Arc<dyn Fn(String) + Send + Sync>>错误/被踢下线通知

示例


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> {

    use tigeropen::push::pb::{AssetData, OrderStatusData, PositionData, QuoteData};

    let cb = Callbacks {
        on_quote: Some(Arc::new(|data: QuoteData| {
            println!("行情变动: symbol={}, latest_price={:?}", data.symbol, data.latest_price);
        })),
        on_order: Some(Arc::new(|data: OrderStatusData| {
            println!("订单变动: id={}, status={}", data.id, data.status);
        })),
        on_asset: Some(Arc::new(|data: AssetData| {
            println!("资产变动: account={}, net_liquidation={}", data.account, data.net_liquidation);
        })),
        on_position: Some(Arc::new(|data: PositionData| {
            println!("持仓变动: symbol={}, quantity={}", data.symbol, data.position_qty);
        })),
        on_connect: Some(Arc::new(|| {
            println!("已连接");
        })),
        on_disconnect: Some(Arc::new(|| {
            println!("已断开");
        })),
        ..Callbacks::default()
    };
    push.set_callbacks(cb);

    Ok(())

}

返回示例

无同步服务端响应。回调集合仅在本地替换。


发送心跳

签名


pub fn send_heartbeat(&self) -> bool

说明

构造并写入一个 Protobuf 心跳请求;仅表示本地发送通道接受帧,不等待服务器确认。

参数

参数Rust 类型必填性/条件SDK 默认值
none-Rust 类型必填

返回

  • 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(())

}

返回示例

无同步服务端响应。返回的 bool 仅表示心跳帧是否写入本地发送通道。


处理消息

签名


pub fn handle_message(&self, data: &[u8])

说明

解码一个 varint32 长度前缀的 Protobuf 响应帧,并按命令和数据类型分派到已注册回调;主要供测试或自定义传输使用。

参数

参数Rust 类型必填性/条件SDK 默认值
data&[u8]Rust 类型必填

返回

  • 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(())

}

返回示例

无同步服务端响应。解码结果通过已注册回调分派。



Did this page help you?