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