2015-11-17 82 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/查看所有文檔,然後發送('LTCBTC')是訂閱的正確方法。我究竟做錯了什麼? – Emily

回答

7

The documentation說所有的消息都是JSON編碼的。

郵件編碼

經由Bitfinex的WebSocket的信道發送和接收的每個消息中的JSON格式

需要導入json庫,進行編碼和解碼的消息進行編碼。

The documentation提到三個公共頻道:book,tradesticker
如果你想訂閱一個頻道,你需要發送一個訂閱事件。

訂閱所述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如果答案解決了您的問題,請考慮接受答案,它會獎勵回答者並幫助未來的訪問者更輕鬆地識別解決方案 –