使用Binance GO API订阅期货全合约WebSocket Ticker价格无输出求助
问题分析与解决方案
核心问题:用错了接口模块
你调用的binance.WsAllBookTickerServe是现货交易的WebSocket接口,而你需要的是期货全Ticker推送,应该使用期货子模块的对应接口。
为什么打印无输出?
代码本身没有语法错误,但你连接的是现货的全book ticker流,要么是现货初始推送有延迟,要么你关注的是期货交易对,所以看不到预期的Symbol输出。
修正后的代码
导入期货模块并调用对应接口:
package main import ( "fmt" "github.com/adshao/go-binance/v2/futures" ) func getBinanceFuturesTickers() { wsBookTickerHandler := func(event *futures.WsBookTickerEvent) { // 打印交易对及盘口数据验证输出 fmt.Printf("Symbol: %s, BidPrice: %s, AskPrice: %s\n", event.Symbol, event.BidPrice, event.AskPrice) } errHandler := func(err error) { fmt.Println("Error:", err) } doneC, _, err := futures.WsAllBookTickerServe(wsBookTickerHandler, errHandler) if err != nil { fmt.Println("Connect error:", err) return } <-doneC } func main() { go getBinanceFuturesTickers() // 用select{}阻塞主协程,比循环sleep更优雅 select {} }
补充说明
WsAllBookTickerServe的机制是实时推送单个交易对的更新,不是一次性返回所有交易对列表。初始连接成功后会先推送所有交易对的当前盘口数据(逐个触发handler),之后仅推送数据有变化的交易对。- 你之前的
doneC处理没有问题,它用于接收连接关闭的信号,<-doneC会阻塞直到连接断开。
内容的提问来源于stack exchange,提问作者rihekopo
相关产品推荐
相关产品推荐

