From 30d0d76b77f586f7c013b0cf4d6e2b97c319adf6 Mon Sep 17 00:00:00 2001 From: Josh Burman Date: Mon, 25 Mar 2019 02:44:35 -0400 Subject: [PATCH] new channel change request and exam status request --- src/channelManager.ts | 3 ++- src/channels/channelBase.ts | 2 +- src/channels/sites/mhsChannel.ts | 8 ++++---- src/clients/clientBase.ts | 6 +++--- src/messageManager.ts | 4 ++++ 5 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/channelManager.ts b/src/channelManager.ts index 6dc054c..e7c8ad2 100644 --- a/src/channelManager.ts +++ b/src/channelManager.ts @@ -91,8 +91,9 @@ class ChannelManager { var channel = this.createChannel(changeRequest); this.addClientToChannel(client, channel.id); + var message = {message_type: 'requestExamStatus'}; + channel.broadcastMessage(client, message); this.purgeEmptyChannels(); - console.log(this.channels) } purgeEmptyChannels() { diff --git a/src/channels/channelBase.ts b/src/channels/channelBase.ts index 904f143..b6357ba 100644 --- a/src/channels/channelBase.ts +++ b/src/channels/channelBase.ts @@ -45,7 +45,7 @@ class ChannelBase { return false; } - broadcastMessage(from: ClientBase|MHSClient|null, message: string) { + broadcastMessage(from: ClientBase|null, message: string) { for (let client of this.clients) { if (client != from) { client.ws.send(message); diff --git a/src/channels/sites/mhsChannel.ts b/src/channels/sites/mhsChannel.ts index 985ba22..43e566c 100644 --- a/src/channels/sites/mhsChannel.ts +++ b/src/channels/sites/mhsChannel.ts @@ -1,17 +1,17 @@ -import ClientBase from '../../clients/clientBase'; import MHSClient from '../../clients/sites/mhsClient'; import ChannelBase from '../channelBase'; var logger = require('../../logger'); class MHSChannel extends ChannelBase { - broadcastMessage(from: ClientBase|MHSClient|null, message: any) { + broadcastMessage(from: MHSClient, message: any) { 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)); logger.accessLog.info(`sent to ${client.id}`, { data: { message: message }}); } 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 }}); } } diff --git a/src/clients/clientBase.ts b/src/clients/clientBase.ts index 99af8ac..23e966f 100644 --- a/src/clients/clientBase.ts +++ b/src/clients/clientBase.ts @@ -36,18 +36,18 @@ class ClientBase { return this.data.client; } - connectToChannel(channel: ChannelBase|MHSChannel) { + connectToChannel(channel: MHSChannel) { this.channel = channel; var messageListener = (message: any) => { 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['message_type'] == 'broadcast') { channel.broadcastMessage(this, message); } else if (message['message_type'] == 'changeChannel') { + this.ws.removeListener('message', messageListener); this.channelManager.changeChannel(this, message); } diff --git a/src/messageManager.ts b/src/messageManager.ts index 91c8bd3..2f1c0ed 100644 --- a/src/messageManager.ts +++ b/src/messageManager.ts @@ -8,11 +8,15 @@ let schema = { current_index: Joi.number().integer(), total_questions: Joi.number().integer(), time_elapsed: Joi.number(), + time_left: Joi.any(), status: Joi.string(), channel: Joi.string(), client: Joi.string(), client_type: Joi.string(), user_id: Joi.number().integer(), + user_exam_id: Joi.number().integer(), + user_name: Joi.string(), + exam_title: Joi.string() }; module.exports = {