sock.py 900 B

123456789101112131415161718192021222324252627282930313233
  1. from flask_socketio import Namespace, join_room, leave_room, emit
  2. from utils import sio, rand_str, CAMERAS
  3. class CameraServer(Namespace):
  4. def __init__(self, namespace: "str"):
  5. super().__init__(namespace)
  6. self.cid = rand_str()
  7. while self.cid in CAMERAS.keys():
  8. self.cid = rand_str()
  9. def on_connect(self):
  10. emit("set id", self.cid)
  11. def on_disconnect(self):
  12. CAMERAS[self.cid]["online"] = False
  13. CAMERAS[self.cid]["data"] = None
  14. def on_real_id(self, cid: "str"):
  15. self.cid = cid
  16. if cid not in CAMERAS.keys():
  17. CAMERAS[cid] = {"name": "Untitled", "online": True, "data": None}
  18. else:
  19. CAMERAS[cid]["online"] = True
  20. join_room("all")
  21. join_room(cid)
  22. def on_req(self, msg: "str"):
  23. print(msg)
  24. emit("resp")
  25. sio.on_namespace(CameraServer("/camera"))