'ss'
This commit is contained in:
39
ws_server.py
Normal file
39
ws_server.py
Normal file
@@ -0,0 +1,39 @@
|
||||
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())
|
||||
Reference in New Issue
Block a user