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()

命令行运行服务器:

$ python web_server.py 

客户端 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())

命令行运行客户端:

$ 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

创建Python_WebSocket 服务器

创建 Python_WebSocket 客户端

方式1

方式2

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

源代码

创建服务器和JavaScript客户端

源代码

异步网络WebSocket服务器

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

你可能感兴趣的:(编程,Python,python,websocket,服务器)