diff --git a/public/js/chat.js b/public/js/chat.js index 987f5fc..f8d15d0 100644 --- a/public/js/chat.js +++ b/public/js/chat.js @@ -10,8 +10,22 @@ $(document).ready(() => { //dev const socket = new WebSocket('ws://localhost:3000'); + const appendMessageToChat = (author, content) => { + const messageDiv = document.createElement('div')//`
<${message.author}> ${message.content}

` + messageDiv.className = "chat-message" + messageDiv.textContent = `<${author}> ${content}` + document.getElementsByClassName("messages-container")[0].appendChild(messageDiv) + } + socket.onmessage = message => { - console.log(message) + + try { + message = JSON.parse(message.data) + } catch(e) { + console.log(e) + return; + } + appendMessageToChat(message.author, message.content) } const sendData = async () => { @@ -24,6 +38,8 @@ $(document).ready(() => { }; socket.send(JSON.stringify(message)); + appendMessageToChat(message.author, message.content) + $("#chat-input").val("") } $("#send-message-button").click(sendData); diff --git a/src/messages.js b/src/messages.js index 02934bc..f82ba1a 100644 --- a/src/messages.js +++ b/src/messages.js @@ -27,9 +27,14 @@ const startChat = async () => { await consumer.run({ eachMessage: async ({topic, partition, message}) => { - const jsonMessage = JSON.parse(message.value.toString()) + let jsonMessage + try { + jsonMessage = JSON.parse(message.value.toString()) + } catch (e) { + console.log(e) + return + } if (jsonMessage.origin == "website") return; - console.log(wsClients.length) wsClients.forEach(client => { console.log("sending message to a client") client.send(JSON.stringify({ @@ -38,14 +43,21 @@ const startChat = async () => { timestamp: jsonMessage.timestamp })); }); - console.log(message.value.toString()); + + const datetime = Math.round(Date.now() / 1000); + + await db.query( + "INSERT INTO chat_messages(author, datetime, content) VALUES ($1, to_timestamp($2)::timestamp, $3)", + [jsonMessage.author, datetime, jsonMessage.content]) + .catch(e => { + console.log("Error on inserting data into the DB: ", e); + }); } }); const wsServer = new WebSocketServer({ noServer: true }); wsServer.on('connection', socket => { - console.log("Hooray! New socket connection") wsClients.push(socket); socket.on('message', async (message) => { message = JSON.parse(message.toString()); @@ -53,7 +65,6 @@ const startChat = async () => { socket.send("Malformed package."); return; } - console.log(message); const token = message.jwt; if (!jwt.verify(token, process.env.SECRET)) { socket.send("JWT is not valid.");