首页 > 解决方案 > iOS/Swift 和 Coinbase Pro API - 订阅 Websocket 源

问题描述

我正在尝试使用 Swift 订阅 websocket 提要。根据其 websocket 提要的新Coinbase Pro API 文档

要开始接收提要消息,您必须首先向服务器发送一条订阅消息,指明要接收哪些渠道和产品。此消息是强制性的——如果在 5 秒内没有收到订阅,您将被断开连接。

我做的第一件事是将Starscream添加到项目中,以使连接到 websocket 更容易实现。我按照自述文件中的步骤适当地添加了委托方法。

接下来,我通过创建一个对象并在设置请求后URLSession调用成功地发送了一个 HTTP GET 请求(我得到一个 200 代码作为响应) ,如下所示:dataTask(with: )

    let session = URLSession.shared

    guard let url = URL(string: "https://api.pro.coinbase.com/users/self/verify") else {
        print("Could not create URL.")
        return
    }

    var request = URLRequest(url: url)

    request.httpMethod = "GET"

    let body: [String: Any] = ["type": "subscribe",
                               "channels": [["name": "heartbeat"],
                              ["product_ids": ["BTC-USD"]]]]
    let data = try! JSONSerialization.data(withJSONObject: body,
                                                  options: JSONSerialization.WritingOptions.sortedKeys)
    request.httpBody = data

    let task = session.dataTask(with: request) { (data, response, error) in 
        // Check for errors, clean up data, etc.
    }

    task.resume

一切似乎都已正确链接,但我仍然没有收到来自 websocket 提要的“订阅”消息。我错过了什么?

标签: iosjsonswifthttpwebsocket

解决方案


推荐阅读