You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:43:16