🥑Python_WebSocket服务器和Python_JavaScript客户端
Python | WebSocket | JavaScript | 服务器/客户端 | 异步 | asyncio
简述:
Python创建WebSocket服务器和客户端
Python创建WebSocket服务器和JavaScript创建客户端
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客户端
源代码
Python 异步网络WebSocket服务器
上传文件和接收文件
Last updated