我正在尝试订阅Bitfinex.com websocket API公共(public) channel BTCUSD

这是代码:

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")是订阅公共(public) channel 的人吗?我收到一条消息,我认为是在确认订阅({"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()

最佳答案

The documentation表示所有消息都是JSON编码的。

您需要导入json库,以对消息进行编码和解码。
The documentation提到了三个公共(public) channel :booktradesticker
如果要订阅 channel ,则需要发送一个订阅事件。
根据the documentation订阅LTCBTC交易的示例:

ws.send(json.dumps({
    "event":"subscribe",
    "channel":"trades",
    "channel":"LTCBTC"
})
然后,您还需要解析传入的JSON编码的消息。
result = ws.recv()
result = json.loads(result)

关于python - 如何使用Python订阅Websocket API channel ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33767817/

10-16 03:29