推送客户端与连接

连接

签名


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

说明

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

参数

参数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 默认值
cbCallbacks必填

返回

()

Callbacks 结构体字段

回调字段类型签名说明
on_quoteOption<fn(QuoteData)>股票基本行情变动
on_quote_bboOption<fn(QuoteData)>股票最优买卖价行情
on_optionOption<fn(QuoteData)>期权行情变动
on_futureOption<fn(QuoteData)>期货行情变动
on_depthOption<fn(QuoteDepthData)>深度盘口数据
on_tickOption<fn(TradeTickData)>逐笔成交
on_full_tickOption<fn(TickData)>全量逐笔数据
on_klineOption<fn(KlineData)>分钟 K 线推送
on_stock_topOption<fn(StockTopData)>股票榜单推送
on_option_topOption<fn(OptionTopData)>期权榜单推送
on_assetOption<fn(AssetData)>资产变动(每 5 秒全量快照)
on_positionOption<fn(PositionData)>持仓变动(每 5 秒全量快照)
on_orderOption<fn(OrderStatusData)>订单状态变动
on_transactionOption<fn(OrderTransactionData)>订单成交明细
on_connectOption<fn()>连接成功
on_disconnectOption<fn()>断开连接
on_errorOption<fn(String)>错误通知
on_kickoutOption<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(())

}

返回示例



Did this page help you?