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(" ")
+ }
+ }
+ }
+
+
+ }
+}
+