ws.py 860 B

123456789101112131415161718192021222324252627282930
  1. # -*- coding: utf-8 -*-
  2. from typing import List
  3. from fastapi import WebSocket
  4. class WebsocketManager:
  5. def __init__(self):
  6. # 存放激活的ws连接对象
  7. self._connections: List[WebSocket] = []
  8. async def connect(self, ws: WebSocket) -> None:
  9. # 等待连接
  10. await ws.accept()
  11. # 存储ws连接对象
  12. self._connections.append(ws)
  13. def disconnect(self, ws: WebSocket) -> None:
  14. # 关闭时 移除ws对象
  15. if ws in self._connections:
  16. self._connections.remove(ws)
  17. @staticmethod
  18. async def sendMessage(message: str, ws: WebSocket) -> None:
  19. # 发消息
  20. await ws.send_text(message)
  21. async def broadcast(self, message: str) -> None:
  22. # 广播消息
  23. for connection in self._connections:
  24. await connection.send_text(message)