2015-11-17 4 views
8

मैं 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() 
+0

यदि आप किसी एपीआई के साथ काम कर रहे हैं, तो पहले दस्तावेज़ पढ़ें। http://docs.bitfinex.com/#subscribe-to-channels –

+0

मैंने उन दस्तावेजों को बड़े पैमाने पर पढ़ा है। और जहां तक ​​मैं कह सकता हूं, मुझे चैनल की सदस्यता लेने के लिए उचित कोड याद आ रहा है। फिर भी यहां सभी दस्तावेजों के माध्यम से जा रहे हैं https://pypi.python.org/pypi/websocket-client/ फिर भेजें ('एलटीसीबीटीसी') सदस्यता लेने का सही तरीका है। मैं क्या गलत कर रहा हूं? – Emily

उत्तर

7

The documentation का कहना है सभी संदेशों JSON इनकोड।

संदेश एन्कोडिंग

प्रत्येक संदेश Bitfinex के WebSocket चैनल के माध्यम से भेजे और प्राप्त किए JSON प्रारूप

आप सांकेतिक शब्दों में बदलना और अपने संदेशों को डिकोड करने के json पुस्तकालय आयात करने के लिए, की जरूरत है एन्कोड किया गया है।

The documentation तीन सार्वजनिक चैनलों का उल्लेख करता है: book, trades और 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 अगर किसी उत्तर ने आपकी समस्या हल की है, तो इसे स्वीकार करने पर विचार करें, यह उत्तर देने वाले को पुरस्कार देता है और भविष्य के आगंतुकों को समाधानों की पहचान करने में सहायता करता है –

संबंधित मुद्दे