X-Git-Url: https://git.auder.net/?p=qomet.git;a=blobdiff_plain;f=sockets.js;h=dafe6d961773e523c98620c460eb26982b02999b;hp=2ce8ae9ad7f352b33c761ddcacd501282a808723;hb=HEAD;hpb=71d1ca9c594b64d959c608a2abbff926480abad5 diff --git a/sockets.js b/sockets.js index 2ce8ae9..dafe6d9 100644 --- a/sockets.js +++ b/sockets.js @@ -1,35 +1,49 @@ const message = require("./public/javascripts/utils/socketMessages"); const params = require("./config/parameters"); -const AssessmentModel = require("./models/assessment"); +const EvaluationModel = require("./models/evaluation"); const ObjectId = require("bson-objectid"); module.exports = function(io) { - io.of("/").on("connection", socket => { + io.of("/").on("connection", socket => { //student or monitor connexion const aid = socket.handshake.query.aid; - socket.join(aid); - // Student or monitor connexion const isTeacher = !!socket.handshake.query.secret && socket.handshake.query.secret == params.secret; if (isTeacher) { - socket.on(message.newAnswer, m => { //got answer from student - socket.emit(message.newAnswer, m); - }); + socket.join(aid + "_teacher"); socket.on(message.allAnswers, m => { //send feedback to student (answers) - socket.broadcast.to(aid).emit(message.allAnswers, m); + socket.broadcast.to(aid + "_student").emit(message.allAnswers, m); }); } else //student { const number = socket.handshake.query.number; const password = socket.handshake.query.password; - AssessmentModel.checkPassword(ObjectId(aid), number, password, (err,ret) => { + EvaluationModel.checkPassword(ObjectId(aid), number, password, (err,ret) => { if (!!err || !ret) return; //wrong password, or some unexpected error... - socket.on("disconnect", () => { - //TODO: notify monitor (grey low opacity background) - //Also send to server: discoTime in assessment.papers ... + EvaluationModel.newConnection(ObjectId(aid), number); + socket.broadcast.to(aid + "_teacher").emit(message.studentConnect, {number: number}); + socket.join(aid + "_student"); + socket.on(message.newAnswer, m => { //got answer from student client + socket.broadcast.to(aid + "_teacher").emit(message.newAnswer, m); + }); + socket.on(message.studentBlur, m => { + socket.broadcast.to(aid + "_teacher").emit(message.studentBlur, m); + }); + socket.on(message.studentFocus, m => { + socket.broadcast.to(aid + "_teacher").emit(message.studentFocus, m); + }); + socket.on(message.studentResize, m => { + socket.broadcast.to(aid + "_teacher").emit(message.studentResize, m); + }); + socket.on(message.studentFullscreen, m => { + socket.broadcast.to(aid + "_teacher").emit(message.studentFullscreen, m); + }); + socket.on("disconnect", () => { //notify monitor + server + EvaluationModel.setDiscoTime(ObjectId(aid), number); + socket.broadcast.to(aid + "_teacher").emit(message.studentDisconnect, {number: number}); }); }); }