zoukankan      html  css  js  c++  java
  • 用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连接实现一样。

  • 相关阅读:
    Spring +quartz获取ApplicationContext上下文
    开源 java CMS
    js实现页面跳转的几种方式
    hdu-4089-Activation-概率dp
    linux 内核定时器
    linux 短延时
    linux 基于 jiffy 的超时
    linux 让出处理器
    linux 延后执行
    linux获知当前时间
  • 原文地址:https://www.cnblogs.com/elliottc/p/8823975.html
Copyright © 2011-2022 走看看