new channel change request and exam status request
This commit is contained in:
parent
273390d73e
commit
30d0d76b77
@ -91,8 +91,9 @@ class ChannelManager {
|
|||||||
|
|
||||||
var channel = this.createChannel(changeRequest);
|
var channel = this.createChannel(changeRequest);
|
||||||
this.addClientToChannel(client, channel.id);
|
this.addClientToChannel(client, channel.id);
|
||||||
|
var message = {message_type: 'requestExamStatus'};
|
||||||
|
channel.broadcastMessage(client, message);
|
||||||
this.purgeEmptyChannels();
|
this.purgeEmptyChannels();
|
||||||
console.log(this.channels)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
purgeEmptyChannels() {
|
purgeEmptyChannels() {
|
||||||
|
@ -45,7 +45,7 @@ class ChannelBase {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
broadcastMessage(from: ClientBase|MHSClient|null, message: string) {
|
broadcastMessage(from: ClientBase|null, message: string) {
|
||||||
for (let client of this.clients) {
|
for (let client of this.clients) {
|
||||||
if (client != from) {
|
if (client != from) {
|
||||||
client.ws.send(message);
|
client.ws.send(message);
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
import ClientBase from '../../clients/clientBase';
|
|
||||||
import MHSClient from '../../clients/sites/mhsClient';
|
import MHSClient from '../../clients/sites/mhsClient';
|
||||||
import ChannelBase from '../channelBase';
|
import ChannelBase from '../channelBase';
|
||||||
|
|
||||||
var logger = require('../../logger');
|
var logger = require('../../logger');
|
||||||
|
|
||||||
class MHSChannel extends ChannelBase {
|
class MHSChannel extends ChannelBase {
|
||||||
broadcastMessage(from: ClientBase|MHSClient|null, message: any) {
|
broadcastMessage(from: MHSClient, message: any) {
|
||||||
for (let client of this.clients) {
|
for (let client of this.clients) {
|
||||||
if (client != from && client.data.user_type == 'teacher') {
|
if (client != from && client.data.user_type != from.data.user_type) {
|
||||||
|
console.log('sending message: ' + JSON.stringify(message))
|
||||||
client.ws.send(JSON.stringify(message));
|
client.ws.send(JSON.stringify(message));
|
||||||
logger.accessLog.info(`sent to ${client.id}`, { data: { message: message }});
|
logger.accessLog.info(`sent to ${client.id}`, { data: { message: message }});
|
||||||
} else {
|
} else {
|
||||||
logger.accessLog.info(`client either not a teacher or is the sender: ${client.id}`, { data: { message: message }});
|
logger.accessLog.info(`client either a ${client.data.user_type} or is the sender: ${client.id}`, { data: { message: message }});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,18 +36,18 @@ class ClientBase {
|
|||||||
return this.data.client;
|
return this.data.client;
|
||||||
}
|
}
|
||||||
|
|
||||||
connectToChannel(channel: ChannelBase|MHSChannel) {
|
connectToChannel(channel: MHSChannel) {
|
||||||
this.channel = channel;
|
this.channel = channel;
|
||||||
|
|
||||||
var messageListener = (message: any) => {
|
var messageListener = (message: any) => {
|
||||||
logger.accessLog.info(`starting message transaction on channel ${channel.id}: `, {message: message});
|
logger.accessLog.info(`starting message transaction on channel ${channel.id}: `, {message: message});
|
||||||
this.ws.removeListener('message', messageListener);
|
message = messageManager.prepareMessage(message);
|
||||||
message = messageManager.prepareMessage(message)
|
|
||||||
|
|
||||||
if (!message.error) {
|
if (!message.error) {
|
||||||
if (message['message_type'] == 'broadcast') {
|
if (message['message_type'] == 'broadcast') {
|
||||||
channel.broadcastMessage(this, message);
|
channel.broadcastMessage(this, message);
|
||||||
} else if (message['message_type'] == 'changeChannel') {
|
} else if (message['message_type'] == 'changeChannel') {
|
||||||
|
this.ws.removeListener('message', messageListener);
|
||||||
this.channelManager.changeChannel(this, message);
|
this.channelManager.changeChannel(this, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,11 +8,15 @@ let schema = {
|
|||||||
current_index: Joi.number().integer(),
|
current_index: Joi.number().integer(),
|
||||||
total_questions: Joi.number().integer(),
|
total_questions: Joi.number().integer(),
|
||||||
time_elapsed: Joi.number(),
|
time_elapsed: Joi.number(),
|
||||||
|
time_left: Joi.any(),
|
||||||
status: Joi.string(),
|
status: Joi.string(),
|
||||||
channel: Joi.string(),
|
channel: Joi.string(),
|
||||||
client: Joi.string(),
|
client: Joi.string(),
|
||||||
client_type: Joi.string(),
|
client_type: Joi.string(),
|
||||||
user_id: Joi.number().integer(),
|
user_id: Joi.number().integer(),
|
||||||
|
user_exam_id: Joi.number().integer(),
|
||||||
|
user_name: Joi.string(),
|
||||||
|
exam_title: Joi.string()
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user