¿Cómo suscribirse a Websocket API Channel usando Python?

Estoy tratando de suscribirme al canal público de la API de BTCUSD .

Aquí está el código:

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

Creo que ws.send("BTCUSD") es lo que se suscribe al canal público? Recibo un mensaje que creo que está confirmando la suscripción ({"event":"info","version":1} , pero luego no obtengo el flujo de datos. ¿Qué me estoy perdiendo?

Actualización: Aquí está el código que finalmente funcionó.

 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 documentación dice que todos los mensajes están codificados en JSON.

Codificación de mensajes

Cada mensaje enviado y recibido a través del canal websocket de Bitfinex está codificado en formato JSON

Necesita importar la biblioteca json para codificar y decodificar sus mensajes.

La documentación menciona tres canales públicos: book , trades y ticker .
Si desea suscribirse a un canal, debe enviar un evento de suscripción.

Ejemplo de suscripción a las operaciones de LTCBTC, según la documentación :

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

Entonces también necesitas analizar los mensajes codificados JSON entrantes.

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