33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
import structlog
|
|
|
|
from app.communication.socketio.server import sio
|
|
|
|
logger = structlog.get_logger("socketio.monitoring")
|
|
|
|
|
|
@sio.on("connect", namespace="/monitoring")
|
|
async def monitoring_connect(sid: str, environ: dict) -> None:
|
|
logger.info("monitoring_connected", sid=sid)
|
|
|
|
|
|
@sio.on("disconnect", namespace="/monitoring")
|
|
async def monitoring_disconnect(sid: str) -> None:
|
|
logger.info("monitoring_disconnected", sid=sid)
|
|
|
|
|
|
@sio.on("subscribe_device", namespace="/monitoring")
|
|
async def subscribe_device(sid: str, data: dict) -> None:
|
|
device_uid = data.get("device_uid")
|
|
if device_uid:
|
|
await sio.enter_room(sid, f"device:{device_uid}", namespace="/monitoring")
|
|
logger.info("subscribed_device", sid=sid, device_uid=device_uid)
|
|
|
|
|
|
@sio.on("unsubscribe_device", namespace="/monitoring")
|
|
async def unsubscribe_device(sid: str, data: dict) -> None:
|
|
device_uid = data.get("device_uid")
|
|
if device_uid:
|
|
await sio.leave_room(sid, f"device:{device_uid}", namespace="/monitoring")
|