Add required test suite and websocket fixes

This commit is contained in:
ameer
2026-05-02 03:08:48 +08:00
parent dfebfe2ee8
commit 63a03c0367
14 changed files with 516 additions and 29 deletions

View File

@@ -594,28 +594,36 @@ class RoomManager:
async def broadcast_question_closed(self, sid: str, question_idx: int) -> None:
for websocket, identity in list(self.student_clients[sid].items()):
await self._safe_send(websocket, await self.question_closed_message(sid, question_idx, identity))
self._queue_send(websocket, await self.question_closed_message(sid, question_idx, identity))
await self.broadcast_instructors(sid, await self.question_closed_message(sid, question_idx))
await self.broadcast_instructors(sid, await self.full_leaderboard_message(sid))
await asyncio.sleep(0)
async def broadcast_between_questions(self, sid: str, next_idx: int) -> None:
for websocket, identity in list(self.student_clients[sid].items()):
await self._safe_send(websocket, await self.between_message(sid, next_idx, identity))
self._queue_send(websocket, await self.between_message(sid, next_idx, identity))
await self.broadcast_instructors(sid, await self.between_message(sid, next_idx))
await self.broadcast_instructors(sid, await self.full_leaderboard_message(sid))
await asyncio.sleep(0)
async def broadcast_session_ended(self, sid: str) -> None:
for websocket, identity in list(self.student_clients[sid].items()):
await self._safe_send(websocket, await self.ended_message(sid, identity))
self._queue_send(websocket, await self.ended_message(sid, identity))
await self.broadcast_instructors(sid, await self.ended_message(sid))
await asyncio.sleep(0)
async def broadcast_students(self, sid: str, message: dict[str, Any]) -> None:
for websocket in list(self.student_clients[sid]):
await self._safe_send(websocket, message)
self._queue_send(websocket, message)
await asyncio.sleep(0)
async def broadcast_instructors(self, sid: str, message: dict[str, Any]) -> None:
for websocket in list(self.instructor_clients[sid]):
await self._safe_send(websocket, message)
self._queue_send(websocket, message)
await asyncio.sleep(0)
def _queue_send(self, websocket: WebSocket, message: dict[str, Any]) -> None:
asyncio.create_task(self._safe_send(websocket, message))
async def _safe_send(self, websocket: WebSocket, message: dict[str, Any]) -> None:
try: