2015-11-17 2 views
8

Я пытаюсь подписаться на общедоступный канал API веб-приложений Bitfinex.com BTCUSD.Как подписаться на канал API веб-приложений с помощью Python?

Вот код:

from websocket import create_connection 
ws = create_connection("wss://api2.bitfinex.com:3000/ws") 
ws.connect("wss://api2.bitfinex.com:3000/ws") 
ws.send("LTCBTC") 
while True: 

    result = ws.recv() 
    print ("Received '%s'" % result) 

ws.close() 

Я считаю, что ws.send("BTCUSD") поддерживает общественный канал? Я получаю сообщение назад, я думаю, подтверждает подписку ({"event":"info","version":1}, но после этого я не получаю поток данных. Что мне не хватает?

Обновление: Вот код, который, наконец, работал.

import json 

from websocket import create_connection 
ws = create_connection("wss://api2.bitfinex.com:3000/ws") 
#ws.connect("wss://api2.bitfinex.com:3000/ws") 
ws.send(json.dumps({ 
    "event": "subscribe", 
    "channel": "book", 
    "pair": "BTCUSD", 
    "prec": "P0" 
})) 


while True: 
    result = ws.recv() 
    result = json.loads(result) 
    print ("Received '%s'" % result) 

ws.close() 
+0

Если вы работаете с API, сначала прочтите документы. http://docs.bitfinex.com/#subscribe-to-channels –

+0

Я прочитал эти документы. И насколько я могу судить, мне не хватает правильного кода для подписки на канал. Однако, просматривая всю документацию, https://pypi.python.org/pypi/websocket-client/, затем отправьте («LTCBTC») правильный способ подписаться. Что я делаю не так? – Emily

ответ

7

The documentation говорит, что все сообщения закодированы в JSON.

кодирования сообщений

Каждое сообщение отправлено и получено через WebSocket каналу Bitfinex в закодирован в формате JSON

Вы должны импортировать json библиотеку, чтобы кодировать и декодировать сообщения.

The documentation упоминает три общественных канала: book, trades и ticker.
Если вы хотите подписаться на канал, вам необходимо отправить событие подписки.

Пример подписки на LTCBTC торгов, в соответствии с the documentation:

ws.send(json.dumps({ 
    "event":"subscribe", 
    "channel":"trades", 
    "channel":"LTCBTC" 
}) 

Затем вы должны также анализировать входящие JSON-кодированные сообщения.

result = ws.recv() 
result = json.loads(result) 
+0

Спасибо. Работает. , – Emily

+0

@ Примите решение, решив вашу проблему, подумайте о том, чтобы принять ее, она вознаграждает ответчика и помогает будущим посетителям легче идентифицировать решения –

Смежные вопросы