想要實現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連接實現一樣。
