如何使用 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()

原文由 Emily 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

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

消息编码

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

您需要导入 json 库,以对您的消息进行编码和解码。

该文档 提到了三个公共频道: booktradesticker

如果你想订阅一个频道,你需要发送一个订阅事件。

根据 文档,订阅 LTCBTC 交易的示例:

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

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

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

原文由 gre_gor 发布,翻译遵循 CC BY-SA 4.0 许可协议

我更喜欢在打开时发送参数并添加 ssl 以防止错误

import websocket
import ssl
import json

SOCKET = 'wss://api-pub.bitfinex.com/ws/2'

params = {
    "event": "subscribe",
    "channel": "book",
    "pair": "BTCUSD",
    "prec": "P0"
    }

def on_open(ws):
    print('Opened Connection')
    ws.send(json.dumps(params))

def on_close(ws):
    print('Closed Connection')

def on_message(ws, message):
    print (message)

def on_error(ws, err):
  print("Got a an error: ", err)

ws = websocket.WebSocketApp(SOCKET, on_open = on_open, on_close = on_close, on_message = on_message,on_error=on_error)
ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})

原文由 Alkindus 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题