diff --git a/nginx/public/index.html b/nginx/public/index.html index 5443216..effcd48 100644 --- a/nginx/public/index.html +++ b/nginx/public/index.html @@ -15,6 +15,9 @@

Welcome!



+ + +

diff --git a/nginx/public/officeHours.js b/nginx/public/officeHours.js index 3514c14..50e9cdc 100644 --- a/nginx/public/officeHours.js +++ b/nginx/public/officeHours.js @@ -23,6 +23,12 @@ function enterQueue() { document.getElementById("name").value = ""; } +function enterChatText() { + let newChatMessage1 = document.getElementById("chat").value; + socket.emit("chat_input", newChatMessage1); + document.getElementById("chat").value = ""; +} + function readyToHelp() { socket.emit("ready_for_student"); } diff --git a/src/main/scala/model/OfficeHoursServer.scala b/src/main/scala/model/OfficeHoursServer.scala index 09ef61b..eeb4d7d 100644 --- a/src/main/scala/model/OfficeHoursServer.scala +++ b/src/main/scala/model/OfficeHoursServer.scala @@ -8,6 +8,8 @@ import play.api.libs.json.{JsValue, Json} class OfficeHoursServer() { + var chatLog: Map[SocketIOClient, List[String]] = Map() + val database: DatabaseAPI = if(Configuration.DEV_MODE){ new TestingDatabase }else{ @@ -27,6 +29,7 @@ class OfficeHoursServer() { server.addDisconnectListener(new DisconnectionListener(this)) server.addEventListener("enter_queue", classOf[String], new EnterQueueListener(this)) server.addEventListener("ready_for_student", classOf[Nothing], new ReadyForStudentListener(this)) + server.addEventListener("chat_input", classOf[String], new ChatListener(this)) server.start() @@ -36,6 +39,29 @@ class OfficeHoursServer() { Json.stringify(Json.toJson(queueJSON)) } + def printChats(): Unit = { + if (this.chatLog.keys.isEmpty) { + println("Empty chat log") + } else { + for (user <- this.chatLog.keys) { + if (this.chatLog(user).isEmpty) { + println(" ") + println("Socket: " + user) + println("_______________") + println(" ") + } else { + println(" ") + println("Socket: " + user) + println("_______________") + for (chatLine <- this.chatLog(user)) { + println(chatLine) + } + println(" ") + } + } + } + } + } object OfficeHoursServer { @@ -83,4 +109,42 @@ class ReadyForStudentListener(server: OfficeHoursServer) extends DataListener[No } } +class ChatListener(server: OfficeHoursServer) extends DataListener[String] { + override def onData(socket: SocketIOClient, chatMessage: String, ackRequest: AckRequest): Unit = { + if (server.chatLog.contains(socket)) { + val prevChats: List[String] = server.chatLog(socket) + val currentChats: List[String] = chatMessage :: prevChats + server.chatLog = server.chatLog + (socket -> currentChats) + } else { + server.chatLog = server.chatLog + (socket -> List(chatMessage)) + } + + + + + if (server.chatLog.keys.isEmpty) { + println("Empty chat log") + } else { + for (user <- server.chatLog.keys) { + if (server.chatLog(user).isEmpty) { + println(" ") + println("Socket: " + user) + println("_______________") + println(" ") + } else { + println(" ") + println("Socket: " + user) + println("_______________") + for (chatLine <- server.chatLog(user)) { + println(chatLine) + } + println(" ") + } + } + } + + + } +} +