问题 如何使用Python订阅Websocket API通道?


我正在尝试订阅Bitfinex.com websocket API公共频道 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") 订阅公共频道是什么?我收到一条消息,我认为确认订阅 ({"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()

11564
2017-11-17 21:58


起源

如果您正在使用API​​,请先阅读文档。 docs.bitfinex.com/#subscribe-to-channels - gre_gor
我已经仔细阅读过那些文件。据我所知,我错过了订阅频道的正确代码。然而,在这里浏览所有文档 pypi.python.org/pypi/websocket-client 然后发送('LTCBTC')是订阅的正确方式。我究竟做错了什么? - Emily


答案:


文档 说所有消息都是JSON编码的。

消息编码

通过Bitfinex的websocket通道发送和接收的每条消息都以JSON格式编码

你需要导入 json 库,用于编码和解码您的消息。

文档 提到三个公共频道: booktrades 和 ticker
如果要订阅频道,则需要发送订阅事件。

订阅LTCBTC交易的例子,根据 文件

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

然后,您还需要解析传入的JSON编码消息。

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

11
2017-11-18 19:52



谢谢。它的工作原理。 。 - Emily
@Emily如果答案解决了您的问题,请考虑接受它,它会奖励回答者并帮助未来的访问者更轻松地识别解决方案 - Tim Castelijns
你有没有弄清楚如何同时订阅多个事件? - walksignison