web-dev-qa-db-fra.com

Comment s'abonner au canal API Websocket en utilisant Python?

J'essaie de m'abonner au canal public de l'API Webfocket Bitfinex.com BTCUSD.

Voici le code:

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()

Je crois que ws.send("BTCUSD") est ce qui s'abonne à la chaîne publique? Je reçois un message qui, je pense, confirme l'abonnement ({"event":"info","version":1}, Mais je ne reçois pas le flux de données par la suite. Qu'est-ce que je rate?

Mise à jour: voici le code qui a finalement fonctionné.

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()
17
Emily

La documentation dit que tous les messages sont encodés en JSON.

Encodage des messages

Chaque message envoyé et reçu via le canal Websocket de Bitfinex est codé au format JSON

Vous devez importer la bibliothèque json pour encoder et décoder vos messages.

La documentation mentionne trois canaux publics: book, trades et ticker.
Si vous souhaitez vous abonner à une chaîne, vous devez envoyer un événement d'abonnement.

Exemple de souscription aux métiers LTCBTC, selon la documentation :

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

Ensuite, vous devez également analyser les messages encodés JSON entrants.

result = ws.recv()
result = json.loads(result)
16
gre_gor