推送客户端

创建推送客户端

方法签名

func NewPushClient(cfg *config.ClientConfig, opts ...PushClientOption) *PushClient

cfg 提供认证配置。可选构造参数如下:

选项默认值说明
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 默认值约束
cbCallbacks回调集合;未设置的回调保持 nil
Callbacks 字段类型说明
OnQuotefunc(*pb.QuoteData)行情回调
OnTickfunc(push.PushTradeTick)SDK 解码后的逐笔回调
OnDepthfunc(*pb.QuoteDepthData)深度回调
OnOptionfunc(*pb.QuoteData)期权回调
OnFuturefunc(*pb.QuoteData)期货回调
OnKlinefunc(*pb.KlineData)K 线回调
OnStockTopfunc(*pb.StockTopData)股票榜单回调
OnOptionTopfunc(*pb.OptionTopData)期权榜单回调
OnFullTickfunc(*pb.TickData)全量逐笔回调
OnQuoteBBOfunc(*pb.QuoteData)BBO 行情回调
OnAssetfunc(*pb.AssetData)资产回调
OnPositionfunc(*pb.PositionData)持仓回调
OnOrderfunc(*pb.OrderStatusData)订单回调
OnTransactionfunc(*pb.OrderTransactionData)成交回调
OnConnectfunc()连接成功回调
OnDisconnectfunc()断开回调
OnErrorfunc(error)错误回调
OnKickoutfunc(string)踢出回调

未设置的函数不会被调用。数字货币数据交给 OnQuote。默认逐笔模式调用 OnTick;使用 WithUseFullTick(true) 创建客户端后,服务端返回全量逐笔数据,SDK 优先调用 OnFullTick,同一条消息不再调用 OnTick。当前版本没有分发 OnQuoteBBO 的数据类型。

返回

无返回值。

示例

pc.SetCallbacks(push.Callbacks{OnConnect: func() { fmt.Println("connected") }})

连接

功能说明

连接到推送服务器并进行认证。

方法签名

func (c *PushClient) Connect() error

订阅/退订前必须成功 Connect。所需行情权限取决于标的和数据类型。

参数

无参数。

返回

errornil 表示连接已完成认证并收到连接成功确认。默认连接超时 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

参数

无参数。

返回

ConnectionStateStateDisconnectedStateConnectingStateConnected

示例

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"}


Did this page help you?