用python實現websocket請求遇到的問題及解決方法。


想要實現python的ws庫功能,實時獲取對方服務器ws協議返回的數據,查了下百度,用如下流程:

    ws = create_connection("wss://ws.xxxxxxx.info/inv")
    ws.send(str({"op":"unconfirmed_sub"}))
    print("Receiving...")
    result =  ws.recv()
    print(str(result))

 看文檔需要發送一個指令,用  str({"op":"unconfirmed_sub"}),發現無回顯。經過大牛提示,不能用str方法,用json.dumps()方法。

加載json庫   import json

ws = create_connection("wss://ws.xxxxxxx.info/inv")
ws.send(json.dumps({"op":"unconfirmed_sub"}))
print("Receiving...")
result =  ws.recv()
print(str(result))

 ok,收到單條消息。假如要循環接受呢?簡單

while(1):
    result = ws.recv()
    print(str(result))

 

但是,運行一段時間出現 連接中斷,需要重連,重連后漏掉許多數據,很是煩惱。網上查找沒有明確的解決方式,試着竟然找到一個解決方式。

websocket.enableTrace(True)
ws = websocket.WebSocketApp(
        "wss://ws.xxxxxx.info/inv",
        on_message = on_message,
        on_error = on_error,
        on_close = on_close
    )
ws.on_open = on_open
ws.run_forever()

 python的仿js  websocket寫法方式,重新寫了一遍腳本,流暢接受消息,自動重連發送指令,連接時間明顯減少,基本做到無遺漏數據,與網站js的ws連接實現一樣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM