python_websocket/webSocketServer_1.py

50 lines
1.7 KiB
Python

'''
服务端定时向客户端发送消息
'''
import asyncio
import websockets
from datetime import datetime
# 存储所有连接的客户端
connected_clients = set()
async def send_periodic_messages(interval=5):
"""定期向所有客户端发送消息"""
while True:
await asyncio.sleep(interval)
if connected_clients:
# message = "{'socketType':'7','number':'ROB23100098','groupingId':'0dc1ad7fdb394246981b8576465240ce','onlineStatus':'1','robotId':'6865c4ce61ee45a69e79f62eee55b83c'}"
message = "{\"socketType\":\"7\",\"number\":\"ROB23100098\",\"groupingId\":\"0dc1ad7fdb394246981b8576465240ce\",\"onlineStatus\":\"1\",\"robotId\":\"6865c4ce61ee45a69e79f62eee55b83c\"}"
# 6865c4ce61ee45a69e79f62eee55b83c
# 向所有客户端广播消息
await asyncio.wait([client.send(message) for client in connected_clients])
async def handle_client(websocket, path):
"""处理客户端连接"""
# 添加新客户端
connected_clients.add(websocket)
try:
# 保持连接开放
async for message in websocket:
# 可选的:处理客户端发来的消息
print(f"Received: {message}")
finally:
# 客户端断开时移除
connected_clients.remove(websocket)
async def main():
# 启动定时任务
asyncio.create_task(send_periodic_messages(interval=10))
# 启动WebSocket服务器
server = await websockets.serve(
handle_client,
"10.0.0.202",
8788
)
print("WebSocket server started on ws://10.0.0.202:8788")
await server.wait_closed()
if __name__ == "__main__":
asyncio.run(main())