协程 多个 websocket
时间: 2023-09-02 21:14:24 浏览: 222
可以使用协程来同时处理多个 WebSocket 连接,这样就可以在不同的连接之间进行切换,提高程序的并发性和效率。以下是一个简单的示例代码:
```python
import asyncio
import websockets
async def handle_websocket(websocket):
async for message in websocket:
# 处理收到的消息
await websocket.send("Received: " + message)
async def main():
async with websockets.connect('ws://localhost:8000') as websocket1, \
websockets.connect('ws://localhost:8001') as websocket2, \
websockets.connect('ws://localhost:8002') as websocket3:
tasks = [asyncio.create_task(handle_websocket(websocket))
for websocket in [websocket1, websocket2, websocket3]]
await asyncio.gather(*tasks)
if __name__ == '__main__':
asyncio.run(main())
```
在这个示例中,`handle_websocket` 函数用于处理单个 WebSocket 连接的消息,`main` 函数则使用 `async with` 语句同时连接多个 WebSocket,并创建协程任务列表 `tasks`,然后使用 `asyncio.gather` 函数等待所有任务完成。通过这种方式,可以同时处理多个 WebSocket 连接,而不会阻塞程序的执行。
阅读全文