2015-11-17 81 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如果答案解决了您的问题,请考虑接受答案,它会奖励回答者并帮助未来的访问者更轻松地识别解决方案 –