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()
_
ドキュメント は、すべてのメッセージがJSONエンコードされていることを示しています。
メッセージのエンコード
BitfinexのWebSocketチャネルを介して送受信される各メッセージは、JSON形式でエンコードされます
メッセージをエンコードおよびデコードするには、json
ライブラリをインポートする必要があります。
ドキュメント は、book
、trades
、ticker
の3つのパブリックチャネルについて言及しています。
チャンネルを購読するには、購読イベントを送信する必要があります。
ドキュメント によると、LTCBTCトレードにサブスクライブする例:
ws.send(json.dumps({
"event":"subscribe",
"channel":"trades",
"channel":"LTCBTC"
})
次に、着信JSONエンコードメッセージを解析する必要もあります。
result = ws.recv()
result = json.loads(result)