iOS / Swift & Coinbase Pro API - Подписаться на канал Websocket - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь подписаться на ленту веб-сокетов с помощью Swift. Согласно новой документации Coinbase Pro API для их веб-сокета:

Чтобы начать получать фид-сообщения, вы должны сначала отправить сообщение подписки на сервер с указанием каналов и продуктов для получения. Это сообщение обязательно. Вы будете отключены, если подписка не была получена в течение 5 секунд.

Первым делом я добавил Starscream в проект, чтобы упростить подключение к веб-сокетам. Я следовал инструкциям в README и соответствующим образом добавил методы делегата.

Затем я успешно отправил HTTP-запрос GET (в ответ я получил код 200), создав объект URLSession и вызвав 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

Кажется, все связано правильно, но я все еще не получаю сообщения "подписки" из ленты веб-сокетов. Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...