web-dev-qa-db-ja.com

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()
_
17
Emily

ドキュメント は、すべてのメッセージがJSONエンコードされていることを示しています。

メッセージのエンコード

BitfinexのWebSocketチャネルを介して送受信される各メッセージは、JSON形式でエンコードされます

メッセージをエンコードおよびデコードするには、jsonライブラリをインポートする必要があります。

ドキュメント は、booktradestickerの3つのパブリックチャネルについて言及しています。
チャンネルを購読するには、購読イベントを送信する必要があります。

ドキュメント によると、LTCBTCトレードにサブスクライブする例:

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

次に、着信JSONエンコードメッセージを解析する必要もあります。

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