futu-go是富途牛牛OpenApi的Go语言SDK
futu-go被极简设计,一切为了方便开发者使用,方便开发者理解,最大限度减少开发者的依赖,把复杂的细节都cover在SDK内部。 目标是开发在花10-20分钟阅读完本文档,然后对照官方的.proto文件定义,再结合其他一些信息即可快速上手。 以下是介绍
目录名 | 包结构 | 备注 |
---|---|---|
adapt | package adapt | 富途协议适配代码目录,适配富途proto协议,文件毕竟多但需要关系的并不多,下面会具体介绍adapt的用途 |
client | package client | futu-go的client代码,提供了便利的调用方法,下面会介绍几种典型的调用方式 |
logger | package logger | 简单封装了一个日志模块,引用了github.com/sirupsen/logrus |
futuproto | - | 富途的protobuf定义文件,从富途Python SDK代码库中copy过来,不要修改他,目录内的build.sh用通过protoc生成GO语言的pb类定义文件 |
pb | 子目录下分布定义 | 使用build.sh生产的GO语言的pb定义 |
examples/xxx | main | SDK调用的示例 |
logger是futu-go封装的日志打印接口,采用logrus格式
为了开发调试方便,默认的日志级别是DebugLevel级别,这样可以打印出所有交付日志方便开发过程测试,这样futu-go的单测程序都没有做判定,而是通过观察日志来验证结果。
正式运行时,可以通过 logger.SetLevel(logger.WarnLevel)
来改变日志级别,减少交互日志打印,但实际没有必要,不建议这样做。
adapt主要是协议适配,主要用到的有
- adapt.ProtoID_{xxxx} 常量,调用proto协议编号
- adapt.With() 方法,调用proto协议时设置参数
- adapt.Header 富途协议头封装
- adapt.Response 调用client.Sync的返回值
- client.New/NewEncrypt/Create() 创建Client对象
- client.Sync/Async 调用富途协议接口
- client.ResPack 异步回调返回的包体
- client.Worker 一个极简多goroutine调度框架 使用client.Worker可以轻松实现复杂策略逻辑
- Client.KeepAlive() 富途OpenD需要周期性发送KeepAlive()请求,否则会被关闭链接,使用client.Worker的调度已经自动调用不用关系。