python websocket管理连接数量和状态的例子
时间: 2023-11-10 10:05:27 浏览: 247
以下是一个管理 WebSocket 连接数量和状态的 Python 代码示例:
```python
import asyncio
import websockets
# 存储 WebSocket 连接的列表
connected = set()
async def server(websocket, path):
# 添加连接到列表
connected.add(websocket)
try:
# 连接建立时发送欢迎消息
await websocket.send("Welcome!")
while True:
# 接收客户端传来的消息
message = await websocket.recv()
if message == "disconnect":
# 客户端要求断开连接,发送再见消息并关闭连接
await websocket.send("Goodbye!")
connected.remove(websocket)
await websocket.close()
break
except websockets.exceptions.ConnectionClosed:
# 连接断开时从列表中移除
connected.remove(websocket)
async def manage_connections():
async with websockets.serve(server, "localhost", 8765):
while True:
# 以固定时间间隔监控连接数和状态
print(f"Connections: {len(connected)}")
for conn in connected.copy():
# 测试连接是否还有效
try:
await asyncio.wait_for(conn.ping(), timeout=1)
except:
# 如果 ping 失败,移除连接
connected.remove(conn)
await asyncio.sleep(1)
asyncio.run(manage_connections())
```
在这个例子中,我们使用了 Python 的 websockets 库来实现 WebSocket 服务器,并通过一个循环来监控连接数和状态。程序会每秒钟打印一次当前连接数,并通过发送 ping 消息测试连接是否还有效。如果 ping 失败,就会移除连接。当客户端请求断开连接时,服务器会发送再见消息并关闭连接。
阅读全文