Я пытаюсь подключиться к серверу exchange.blockchain.com, используя их API. Вот официальная документация , если вы хотите ее проверить. Я работаю над простым python скриптом для получения Bitcoin цен каждые x
секунд. Примечание: API имеет ограничение в 1200 запросов в минуту. Вот первая часть моего кода:
from websocket import create_connection
options = {}
options['origin'] = 'https://exchange.blockchain.com'
url = "wss://ws.prod.blockchain.info/mercury-gateway/v1/ws"
ws = create_connection(url, **options)
msg = '{"token": "{API_SECRET}", "action": "subscribe", "channel": "auth"}'
ws.send(msg)
result = ws.recv()
print(result)
ws.close()
Я получаю следующий результат:
{ "seqnum":0,
"event":"subscribed",
"channel":"auth",
"readOnly":false }
Пока все правильно. Теперь в официальной документации сказано, что я должен подписаться на канал prices
для получения рыночных данных, поэтому:
msg = {
"action": "subscribe",
"channel": "prices",
"symbol": "BTC-USD",
"granularity": 60
}
ws.send(str(msg))
result = ws.recv()
print(result)
ws.close()
Результат:
{
"seqnum": 0,
"event": "subscribed",
"channel": "prices",
"symbol": "BTC-USD"
}
Все в порядке, но, согласно в документацию, я предполагаю получить также следующий вывод с данными, запрошенными через канал
{
"seqnum": 2,
"event": "updated",
"channel": "prices",
"symbol": "BTC-USD",
"price": [1559039640, 8697.24, 8700.98, 8697.27, 8700.98, 0.431]
}
Конечно, моя проблема в том, что я не получаю последнюю и наиболее важную часть вывода . Я думаю, это потому, что я не знаю, как работает API и сокет. Поэтому в моем коде чего-то не хватает. Что это?