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