socket_server.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import json
  2. import asyncio
  3. from models import *
  4. from .connect_manager import ConnectionManager
  5. def jsonMessage(code=0, msg="", data: object = None):
  6. """json字符串数据"""
  7. jsonData = {"code": code, "msg": msg, "data": data}
  8. return json.dumps(jsonData)
  9. manager = ConnectionManager()
  10. @app.websocket("/ws")
  11. async def websocket_endpoint(websocket: WebSocket):
  12. await manager.connect(websocket)
  13. try:
  14. while True:
  15. '''接收json数据'''
  16. data = await websocket.receive_json()
  17. # 处理发送消息逻辑
  18. await handlerSend(data,websocket)
  19. # await manager.broadcast(f"Client # says: {data}")
  20. except WebSocketDisconnect:
  21. data = jsonMessage(code=1,data=None,msg="socket 内部错误")
  22. await manager.broadcast(data,websocket)
  23. manager.disconnect(websocket)
  24. async def handlerSend(receiveData,websocket):
  25. # 处理消息发送逻辑
  26. jsonType = receiveData.get("type")
  27. match jsonType:
  28. case 'ping':
  29. '''发送心跳'''
  30. data = jsonMessage("pong")
  31. await manager.send_personal_message(data,websocket)
  32. case 'pong':
  33. '''发送心跳'''
  34. pass