推送客户端
创建推送客户端
方法签名
func NewPushClient(cfg *config.ClientConfig, opts ...PushClientOption) *PushClientcfg 提供认证配置。可选构造参数如下:
| 选项 | 默认值 | 说明 |
|---|---|---|
WithPushURL(string) | openapi.tigerfintech.com:9883 | 推送服务器地址 |
WithHeartbeatInterval(time.Duration) | 10s | 心跳间隔 |
WithReconnectInterval(time.Duration) | 5s | 自动重连初始间隔;失败后倍增,最大 60s |
WithAutoReconnect(bool) | true | 是否在非主动断线后自动重连 |
WithConnectTimeout(time.Duration) | 30s | 建连和等待认证响应的超时时间 |
WithUseFullTick(bool) | false | 是否请求全量逐笔数据;必须在 Connect 前设置 |
pc := push.NewPushClient(cfg, push.WithUseFullTick(true))设置回调
功能说明
设置回调函数集合。
方法签名
func (c *PushClient) SetCallbacks(cb Callbacks)参数
| 参数 | 类型 | 必填 | SDK 默认值 | 约束 |
|---|---|---|---|---|
cb | Callbacks | 是 | 无 | 回调集合;未设置的回调保持 nil |
Callbacks 字段 | 类型 | 说明 |
|---|---|---|
OnQuote | func(*pb.QuoteData) | 行情回调 |
OnTick | func(push.PushTradeTick) | SDK 解码后的逐笔回调 |
OnDepth | func(*pb.QuoteDepthData) | 深度回调 |
OnOption | func(*pb.QuoteData) | 期权回调 |
OnFuture | func(*pb.QuoteData) | 期货回调 |
OnKline | func(*pb.KlineData) | K 线回调 |
OnStockTop | func(*pb.StockTopData) | 股票榜单回调 |
OnOptionTop | func(*pb.OptionTopData) | 期权榜单回调 |
OnFullTick | func(*pb.TickData) | 全量逐笔回调 |
OnQuoteBBO | func(*pb.QuoteData) | BBO 行情回调 |
OnAsset | func(*pb.AssetData) | 资产回调 |
OnPosition | func(*pb.PositionData) | 持仓回调 |
OnOrder | func(*pb.OrderStatusData) | 订单回调 |
OnTransaction | func(*pb.OrderTransactionData) | 成交回调 |
OnConnect | func() | 连接成功回调 |
OnDisconnect | func() | 断开回调 |
OnError | func(error) | 错误回调 |
OnKickout | func(string) | 踢出回调 |
未设置的函数不会被调用。数字货币数据交给 OnQuote。默认逐笔模式调用 OnTick;使用 WithUseFullTick(true) 创建客户端后,服务端返回全量逐笔数据,SDK 优先调用 OnFullTick,同一条消息不再调用 OnTick。当前版本没有分发 OnQuoteBBO 的数据类型。
返回
无返回值。
示例
pc.SetCallbacks(push.Callbacks{OnConnect: func() { fmt.Println("connected") }})连接
功能说明
连接到推送服务器并进行认证。
方法签名
func (c *PushClient) Connect() error订阅/退订前必须成功 Connect。所需行情权限取决于标的和数据类型。
参数
无参数。
返回
error;nil 表示连接已完成认证并收到连接成功确认。默认连接超时 30 秒,默认每 10 秒发送心跳。
客户端默认启用自动重连,初始间隔 5 秒并按 2 倍退避,最大 60 秒。自动恢复仅是基于本地缓存的尽力操作,恢复请求的错误不会返回给调用方。普通按标的订阅可以恢复;SubscribeMarket 的港股全市场行情订阅和排行榜订阅未保留可用于正确恢复的完整 market 参数,账户订阅也只会使用配置账户而不会保留自定义账户。请在重连后的 OnConnect 中显式重新订阅这些类型。可通过构造选项调整连接行为。
示例
if err := pc.Connect(); err != nil {
log.Fatal(err)
}断开连接
功能说明
断开连接。
方法签名
func (c *PushClient) Disconnect() error已断开时调用直接返回 nil。主动断开不会触发自动重连。
参数
无参数。
返回
error;返回底层连接关闭错误。方法会先尝试发送断开通知、关闭连接,并调用 OnDisconnect。
示例
if err := pc.Disconnect(); err != nil {
log.Fatal(err)
}获取连接状态
功能说明
获取当前连接状态。
方法签名
func (c *PushClient) State() ConnectionState参数
无参数。
返回
ConnectionState:StateDisconnected、StateConnecting 或 StateConnected。
示例
result := pc.State()
fmt.Printf("%#v\n", result)0查询已订阅标的
功能说明
获取当前订阅状态。
方法签名
func (c *PushClient) GetSubscriptions() map[SubjectType][]string参数
无参数。
返回
map[SubjectType][]string。返回的是本地缓存副本,不是服务端订阅查询;主题和标的顺序不固定。排行榜条目保存的是指标字符串,港股全市场行情订阅条目保存的是市场字符串。该市场字符串不是已订阅标的列表,也不能用于正确的自动恢复。
示例
result := pc.GetSubscriptions()
fmt.Printf("%#v\n", result)输出示例
map[push.SubjectType][]string{"quote":[]string{"AAPL"}}查询账户订阅
功能说明
获取账户级别订阅状态。
方法签名
func (c *PushClient) GetAccountSubscriptions() []SubjectType参数
无参数。
返回
[]SubjectType。返回的是本地缓存中的账户订阅主题,不包含账户 ID,也不是服务端订阅查询;顺序不固定。
示例
result := pc.GetAccountSubscriptions()
fmt.Printf("%#v\n", result)输出示例
[]push.SubjectType{"asset"}Updated 25 days ago
