import asyncio import websockets connected_clients = set() async def ws_handler(websocket, path=None): """处理WebSocket连接""" print("前端已连接") connected_clients.add(websocket) try: async for message in websocket: print(f"收到前端消息: {message}") await broadcast_message(f"回送消息:{message}") # 发送回客户端的消息 except websockets.exceptions.ConnectionClosed as e: print(f"连接关闭: {e}") finally: connected_clients.remove(websocket) print("客户端断开连接") async def broadcast_message(msg): """广播消息给所有连接的客户端""" if connected_clients: # 遍历所有连接的客户端并发送消息 await asyncio.gather(*[client.send(msg) for client in connected_clients]) # 使用 client.open 检查连接状态 else: print("没有连接的客户端,无法广播消息") async def start_ws_server(): """启动WebSocket服务器""" server = await websockets.serve(ws_handler, '127.0.0.1', 8888) print("WebSocket 服务器已启动 ws://127.0.0.1:8888") try: await server.wait_closed() except asyncio.CancelledError: print("服务器已被取消") if __name__ == '__main__': asyncio.run(start_ws_server())