首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用大猩猩/ websocket订阅websocket

使用大猩猩/ websocket订阅websocket
EN

Stack Overflow用户
提问于 2020-07-28 19:40:23
回答 1查看 2.2K关注 0票数 3

我想使用Binance API的一些websocket流。我之所以在这里发布这篇文章,是因为我认为--这不是API的问题,而是我对websockets的一般理解--

正如官方大猩猩/websocket示例描述的那样,我尝试订阅一个流:

代码语言:javascript
运行
复制
conn, res, err := websocket.DefaultDialer.Dial("wss://stream.binance.com/ws/BTCUSD@markPrice", nil)

fmt.Println(conn)
fmt.Println(res)
fmt.Println(err)

for {
    _, message, readErr := conn.ReadMessage()
    if readErr != nil {
        fmt.Println(readErr)
        return
    }
    fmt.Println(message)
}

连接是在没有错误的情况下创建的,但在此之后,就不会读取任何消息。

我认为问题在于API要求我订阅这样的流:

代码语言:javascript
运行
复制
{
    "method": "SUBSCRIBE",
    "params": [
        "btcusdt@aggTrade",
        "btcusdt@depth"
    ],
    "id": 1
}

据我所知,websocket连接是从一个HTTP请求开始的,据我所知,在那里我发送了这些数据。但是我应该在什么地方、什么时候这么做呢?Dial没有给出发送除headers之外的任何内容的选项。

更新:

通过使用这里,我成功地发送了正确的请求并获得了正确的响应(如文档化的Conn.WriteJSON):

代码语言:javascript
运行
复制
type request struct {
    Method string    `json:"method"`
    Params [1]string `json:"params"`
    ID     int       `json:"id"`
}

markPriceReq := request{"SUBSCRIBE", [1]string{"btcusdt@markPrice"}, 1}
conn.WriteJSON(markPriceReq)

但是,在初始响应之后,不再读取任何数据。我从哪里得到实际的标价数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-29 17:11:26

您的连接url有问题。

流的所有符号都是小写的,您发布的文档链接中的ws基端点是wss://stream.binancefuture.com (Perpetual/Perpetual ws端点),但您使用的是wss://stream.binance.com wss://stream.binance.com ws端点。

标记价格流仅适用于永久/永久测试网 ws端点。我使用原始流url:wss://stream.binancefuture.com/ws/btcusdt@markPrice,没有任何问题。

此请求用于活动订阅/取消订阅,您只在已连接到binance ws并希望订阅更多流或取消订阅流时才使用此请求。

代码语言:javascript
运行
复制
{
    "method": "SUBSCRIBE",
    "params": [
        "btcusdt@aggTrade",
        "btcusdt@depth"
    ],
    "id": 1
}

您不必使用实时订阅/取消订阅,只需像上面这样使用原始url即可:

wss://stream.binancefuture.com/ws/<streamName> (只有一个流) wss://stream.binancefuture.com/stream?streams=<streamName1>/<streamName2>/<streamName3> (组合流)

通过使用原始url,您可以访问<streamName> (在此之后还可以发送一个使用活动订阅/取消订阅的请求)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63141634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档