我试图订阅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()
答案 0 :(得分:15)
The documentation表示所有消息都是JSON编码的。
邮件编码
通过Bitfinex的websocket频道发送和接收的每条消息都以JSON格式编码
您需要导入json
库,对邮件进行编码和解码。
The documentation提到三个公共频道:book
,trades
和ticker
。
如果您想订阅频道,则需要发送订阅活动。
根据the documentation订阅LTCBTC交易的示例:
ws.send(json.dumps({
"event":"subscribe",
"channel":"trades",
"channel":"LTCBTC"
})
然后您还需要解析传入的JSON编码消息。
result = ws.recv()
result = json.loads(result)
答案 1 :(得分:0)
我认为您在这里混合了 2 个不同的 Python 包。一个是 websockets 包,它是您注释的行 (#ws.connect("wss://api2.bitfinex.com:3000/ws")
),另一个是您正在使用的实际包,它是 websocket-client