欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用python实现websocket请求遇到的问题及解决方法。

程序员文章站 2022-06-04 14:34:13
...

想要实现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连接实现一样。