Python实现WebSocket全双工通信示例

1 下载量 5 浏览量 更新于2024-08-03 收藏 1KB MD 举报
WebSocket是一种革命性的网络通信协议,它允许在单个TCP连接上建立全双工(full-duplex)的通信通道,这意味着客户端和服务器之间可以同时发送和接收数据,无需频繁地创建和关闭连接,从而提供了实时、双向的通信能力。Python作为流行的编程语言,其生态系统中有丰富的库支持WebSocket的开发,如`websockets`库。 在Python中,`websockets`库简化了WebSocket服务器和客户端的实现。首先,你需要确保已安装该库,如果没有,可以通过以下命令进行安装: ```bash pip install websockets ``` WebSocket服务器实现: ```python import asyncio import websockets # 定义一个异步函数,处理WebSocket连接 async def echo(websocket, path): async for message in websocket: # 迭代接收客户端的消息 await websocket.send(message) # 将接收到的消息原样发送回客户端 # 创建WebSocket服务器,监听localhost的8765端口 start_server = websockets.serve(echo, "localhost", 8765) # 使用事件循环启动服务器 asyncio.get_event_loop().run_until_complete(start_server) # 保持服务器运行直到程序退出 asyncio.get_event_loop().run_forever() ``` 这个服务器代码监听本地主机上的8765端口,每当有新的连接请求,`echo`函数会被调用,接收客户端发送的消息,并立即发送回去。 WebSocket客户端实现: ```python import asyncio import websockets # 定义一个异步函数,连接到服务器并发送消息 async def hello(): async with websockets.connect("ws://localhost:8765") as websocket: # 建立连接 await websocket.send("Hello, WebSocket!") # 发送问候消息 response = await websocket.recv() # 接收服务器响应 print(f"Received: {response}") # 启动客户端任务 asyncio.get_event_loop().run_until_complete(hello()) ``` 客户端通过`websockets.connect`方法连接到服务器,发送一条消息后,等待并打印接收到的响应。这样,无论客户端还是服务器,都能在同一个TCP连接上实现实时交互。 总结起来,Python中的`websockets`库提供了一种简单易用的方式来构建WebSocket服务器和客户端,使得在分布式系统中实现高效、实时的双向通信变得容易。通过异步IO模型,能够有效地管理连接并发,提高应用程序的性能。无论是用于实时聊天应用、游戏同步或者是实时数据推送,WebSocket都是不可或缺的技术。