• Python_WebSocket服务器和Python_JavaScript客户端


    简述:

    1. Python创建WebSocket服务器和客户端
    2. Python创建WebSocket服务器和JavaScript创建客户端
    3. Python 异步网络WebSocket应用

    在本文中,将讨论 WebSocket客户端和服务器之间的单个长期连接。 我将解释无状态 HTTP 协议的问题,以及 WebSocket 如何克服该问题,并允许您创建响应式 Web 应用程序。 对于本文中的示例,我将使用 Python 创建服务器和客户端。

    WebSocket 简介

    在传统的基于 Web 的通信中,您使用超文本传输协议 (HTTP)。 HTTP 是一个请求。

    为了使网页与来自 Web 服务器的数据保持最新,Web 浏览器需要执行来自 Web 服务器的频繁请求。 这称为轮询。 在网页上的数据需要不断更新的情况下,轮询的成本很高,因为客户端和服务器总是忙于请求和响应。 另一方面,如果服务器上的数据不经常变化(或者以不规则的时间间隔变化),则定期轮询是浪费的。 如果轮询频率降低,重要的数据更新将无法在网络浏览器上及时更新。

    简单服务器和客户端

    服务器 web_server.py:

    import asyncio
    import websockets
    async def handler(ws, path):
        data = await ws.recv()
        reply = f"Data received: {data}"
        await ws.send(reply)
    if __name__ == "__main__":
        start_server = websockets.serve(handler, "127.0.0.1", 8081)
        asyncio.get_event_loop().run_until_complete(start_server)
        asyncio.get_event_loop().run_forever()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    命令行运行服务器:

    $ python web_server.py 
    
    • 1

    客户端 web_client.py :

    import asyncio
    import websockets
    async def connect():
        async with websockets.connect("ws://127.0.0.1:8081/") as websocket:
            await websocket.send("hello world")
            print(f"Reuqest headers:\n{websocket.request_headers}")
            response = await websocket.recv()
            print(f"Response headers:\n{websocket.response_headers}")
            print(response)
    if __name__ == "__main__":
        asyncio.get_event_loop().run_until_complete(connect())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    命令行运行客户端:

    $ python web_client.py 
    
    Reuqest headers:
    Host: 127.0.0.1:8081
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: 1wX9ZDz+x2c+7PoKBhr+eA==
    Sec-WebSocket-Version: 13
    Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
    User-Agent: Python/3.10 websockets/10.3
    Response headers:
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: yBKlMEVMvp6dGL6qj4OH/T6zd5o=
    Sec-WebSocket-Extensions: permessage-deflate; server_max_window_bits=12; client_max_window_bits=12
    Date: Mon, 03 Oct 2022 18:29:32 GMT
    Server: Python/3.10 websockets/10.3
    Data received: hello world
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    创建Python_WebSocket 服务器

    创建 Python_WebSocket 客户端

    方式1

    方式2

    修改服务器向所有客户端广播

    源代码

    创建服务器和JavaScript客户端

    源代码

    异步网络WebSocket服务器

    上传文件和接收文件
    参阅一:亚图跨际
    参阅二:亚图跨际

  • 相关阅读:
    python基础1
    什么是 Rootkit?
    勤奋型人格分析,勤奋型人格如何做职业规划
    报错注入常用函数
    制造业质量管理如何实现数字化?
    Sanitizers 系列之 leak sanitizer 介绍
    华为云弹性云服务器有哪些优势?
    flink1.15.2 报错 processElement_split
    网络货运平台服务模式,你真的了解吗?
    Nodejs和ES6的模块化 import ,export
  • 原文地址:https://blog.csdn.net/jiyotin/article/details/134518405