2017-04-26 5 views
0

Ich versuche, einen Python 3-Code zu schreiben, der alle neuen Dogicoin-Blöcke mit Dogechain Websocket API und python websocket client ausgibt.Python 3 Websocket-Client, laufen für immer

import json 
import ssl 
from websocket import create_connection 

ws = create_connection("wss://ws.dogechain.info/inv", sslopt={"cert_reqs": ssl.CERT_NONE}) 
ws.send(json.dumps({"op":"blocks_sub"})) 
while 1: 
    result = ws.recv() 
    print(result) 

Nach einer erfolgreichen Subskription kommen keine Blockaktualisierungen. Alles, was ich bekomme, ist die folgende Ausgabe und sonst nichts. Mein Ziel ist es, jedes Mal, wenn ein Block ankommt, eine Funktion auszuführen. Was habe ich falsch gemacht?

{"op": "status", "msg": "subscribed, welcome, ..."} 
{"op": "status", "msg": "subscribed"} 
+0

Ich habe das gleiche Problem mit Nodejs Client, haben Sie es geschafft herauszufinden, was los war? – lkan

Antwort

0

Erstellen Sie einen Thread, wo Ihr Block-Funktion vorhanden ist, und in während Bedingung, dass die Thread-Funktion laufen und etwas Schlaf Zeit setzen von Ihnen, auf diese Weise möchten Sie Ihre Blockdaten unabhängig von seiner Existenz haben kann, auch wenn es doesn Es gibt keine leere Antwort.

Für zB habe ich so gemacht, Diese Funktion mein Thread

def mail_data(self): 
    mailbox = getMailBox(); 
    while True: 
     notify('notification',mailbox.checkMailBox()) // my email library in buiilt function 
     time.sleep(20) 

und in meinem HTML-Seite ist, ich bin websocket wie diese verwenden,

ws.onmessage = function (evt) { 
       // on receiving messages through websocket 
       var json_data = evt.data; //this will be got from that function 
}; 

Ich hoffe, das hilft !