zoukankan      html  css  js  c++  java
  • 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()
    
  • 相关阅读:
    《架构之美》阅读笔记六
    《架构之美》阅读笔记五
    软件工程——个人总结
    软件工程——团队作业4
    软件工程——团队答辩
    软件工程-团队作业3
    软件工程——团队作业2
    软件工程-团队作业1
    软件工程第二次作业——结对编程
    软件工程第一次作业补充
  • 原文地址:https://www.cnblogs.com/zhenzi0322/p/14362643.html
Copyright © 2011-2022 走看看