2015-11-17 13 views
8

Bitfinex.com websocket APIパブリックチャンネルBTCUSDを購読しようとしています。ここでPythonを使ってWebsocket APIチャンネルを購読するには?

はコードです:

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

APIを使用している場合は、まずドキュメントをお読みください。 http://docs.bitfinex.com/#subscribe-to-channels –

+0

私はこれらの文書を十分に読んだ。そして、私が知る限りでは、チャンネルを購読するための適切なコードがありません。それでも、https://pypi.python.org/pypi/websocket-client/にあるすべてのドキュメンテーションを参照し、send( 'LTCBTC')を購読するのが適切な方法です。私は間違って何をしていますか? – Emily

答えて

7

The documentationはすべてのメッセージがJSONエンコードされていると言います。

メッセージエンコーディング

BitfinexのWebSocketのチャネルを介して送信し、受信した各メッセージはあなたがあなたのメッセージをエンコードおよびデコードする、jsonライブラリをインポートする必要がJSON形式で

を符号化されています。

The documentationには、3つのパブリックチャネル:book,およびtickerが記載されています。
チャンネルを購読する場合は、購読イベントを送信する必要があります。

、LTCBTC取引に加入the documentationに応じての例:

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

その後、あなたはまた、着信JSONエンコードされたメッセージを解析する必要があります。

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

ありがとうございます。それは働いている。 。 – Emily

+0

@Emily回答があなたの問題を解決した場合はそれを受け入れることを検討し、回答者に報酬を与え、将来の訪問者が簡単に解決策を特定するのを助けます –

関連する問題