• Python访问WebSocket协议


    为什么需要WebSocket协议?

    众所周知,HTTP协议是一个遵循请求-响应模式的协议。这种模式有两个特点:

    1. 由客户端先发起请求,然后等待服务器的响应。
    2. 服务器不能在没有接收到客户端请求时,就发送数据。也就是说,客户端和服务器之间的通信是单向的。

    在某些应用中,通常有服务器向客户端推送数据的需求,也就是需要客户端和服务器之间能够双向通信。而使用现有的HTTP协议不能很好地实现这个需求,于是HTTP协议的升级版-->WebSocket协议被发明出来。

    协议概述

    WebSocket协议包括两部分:握手和数据传输。握手时会使用HTTP协议,所以说它是HTTP协议的升级版。

    安装模块

    pip install websocket-client
    

    访问WebSocket协议

    from websocket import create_connection
    import json
    
    ws = create_connection("wss://xxx.com.com/")
    
    ws.send(json.dumps({"class": "asfd","action": "asfd"}))
    data = ws.recv()
    print(type(data))
    print(data)
    ws.close()
    

    重连问题

    运行一段时间出现 连接中断,需要重连,重连后漏掉了许多数据。

    import websocket
    from threading import Thread
    import time
    import json
    
    
    def on_message(ws, message):
        print("接收信息")
        print(message)
    
    
    def on_error(ws, error):
        print("error", error)
    
    
    def on_close(ws):
        print("关闭")
    
    
    def on_open(ws):
        def run(*args):
            ws.send(json.dumps({"ddd": "xxx", "aa": "xxx"}))
            time.sleep(1)
    
            time.sleep(1)
            ws.close()
    
        Thread(target=run).start()
    
    
    if __name__ == "__main__":
        websocket.enableTrace(False)
        host = "wss://xx.xxx.com/"
        ws = websocket.WebSocketApp(host,
                                    on_message=on_message,
                                    on_error=on_error,
                                    on_close=on_close)
        ws.on_open = on_open
        ws.run_forever()
    
  • 相关阅读:
    微信小程序 | 小程序的转发问题
    开发辅助 | 前端开发工程师必懂的 UI 知识
    微信小程序 | canvas绘图
    服务端 | Linux 学习总结 (一)
    移动端适配 | 适配方案总结
    开发工具 | 利用 deployd 搭建个人博客
    1.10 组织好代码文件,要有“用户思维”
    1.9 组织好代码段,让人对它“一见钟情”
    《计算机是怎样跑起来的》读书笔记(1)
    实用网站收藏
  • 原文地址:https://www.cnblogs.com/zhenzi0322/p/14362643.html
Copyright © 2020-2023  润新知