Add required test suite and websocket fixes
This commit is contained in:
18
app/room.py
18
app/room.py
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user