refactor: move emitToSession broadcast into ws-server.broadcastToSession
Consolidates WS-first + SSE-fallback + guest forwarding logic into ws-server.js so classroomController doesn't duplicate delivery. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -25,22 +25,10 @@ const GUEST_EVENTS = new Set([
|
||||
]);
|
||||
|
||||
/* ── Helper: broadcast to all session participants ─────────────────────── */
|
||||
/* Delivery: WS-first (ws-server.js) with SSE fallback for non-WS users. */
|
||||
function emitToSession(sessionId, data) {
|
||||
const session = db.prepare('SELECT class_id, teacher_id FROM classroom_sessions WHERE id=?').get(sessionId);
|
||||
if (!session) return;
|
||||
|
||||
if (session.class_id) {
|
||||
emitToClass(session.class_id, data);
|
||||
emit(session.teacher_id, data); // teacher is not in class_members — emit separately
|
||||
} else {
|
||||
// personal session — emit to teacher + each invited user
|
||||
emit(session.teacher_id, data);
|
||||
const invites = db.prepare('SELECT user_id FROM classroom_invites WHERE session_id=?').all(sessionId);
|
||||
for (const { user_id } of invites) emit(user_id, data);
|
||||
}
|
||||
|
||||
// Forward whitelisted events to guest viewers
|
||||
if (GUEST_EVENTS.has(data.type)) emitToGuests(sessionId, data);
|
||||
// ws-server handles WS-first + SSE-fallback + guest forwarding internally
|
||||
require('../ws-server').broadcastToSession(sessionId, data, GUEST_EVENTS.has(data.type));
|
||||
}
|
||||
|
||||
/* ── Helper: check if user has access to session ──────────────────────── */
|
||||
|
||||
Reference in New Issue
Block a user