basic 2-way communication
This commit is contained in:
parent
81ae05c583
commit
82f8ffc04e
|
@ -10,8 +10,22 @@ $(document).ready(() => {
|
||||||
//dev
|
//dev
|
||||||
const socket = new WebSocket('ws://localhost:3000');
|
const socket = new WebSocket('ws://localhost:3000');
|
||||||
|
|
||||||
|
const appendMessageToChat = (author, content) => {
|
||||||
|
const messageDiv = document.createElement('div')//`<div class="chat-message" ><${message.author}> ${message.content}</div><br/>`
|
||||||
|
messageDiv.className = "chat-message"
|
||||||
|
messageDiv.textContent = `<${author}> ${content}`
|
||||||
|
document.getElementsByClassName("messages-container")[0].appendChild(messageDiv)
|
||||||
|
}
|
||||||
|
|
||||||
socket.onmessage = message => {
|
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 () => {
|
const sendData = async () => {
|
||||||
|
@ -24,6 +38,8 @@ $(document).ready(() => {
|
||||||
};
|
};
|
||||||
|
|
||||||
socket.send(JSON.stringify(message));
|
socket.send(JSON.stringify(message));
|
||||||
|
appendMessageToChat(message.author, message.content)
|
||||||
|
$("#chat-input").val("")
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#send-message-button").click(sendData);
|
$("#send-message-button").click(sendData);
|
||||||
|
|
|
@ -27,9 +27,14 @@ const startChat = async () => {
|
||||||
|
|
||||||
await consumer.run({
|
await consumer.run({
|
||||||
eachMessage: async ({topic, partition, message}) => {
|
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;
|
if (jsonMessage.origin == "website") return;
|
||||||
console.log(wsClients.length)
|
|
||||||
wsClients.forEach(client => {
|
wsClients.forEach(client => {
|
||||||
console.log("sending message to a client")
|
console.log("sending message to a client")
|
||||||
client.send(JSON.stringify({
|
client.send(JSON.stringify({
|
||||||
|
@ -38,14 +43,21 @@ const startChat = async () => {
|
||||||
timestamp: jsonMessage.timestamp
|
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 });
|
const wsServer = new WebSocketServer({ noServer: true });
|
||||||
wsServer.on('connection', socket => {
|
wsServer.on('connection', socket => {
|
||||||
console.log("Hooray! New socket connection")
|
|
||||||
wsClients.push(socket);
|
wsClients.push(socket);
|
||||||
socket.on('message', async (message) => {
|
socket.on('message', async (message) => {
|
||||||
message = JSON.parse(message.toString());
|
message = JSON.parse(message.toString());
|
||||||
|
@ -53,7 +65,6 @@ const startChat = async () => {
|
||||||
socket.send("Malformed package.");
|
socket.send("Malformed package.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.log(message);
|
|
||||||
const token = message.jwt;
|
const token = message.jwt;
|
||||||
if (!jwt.verify(token, process.env.SECRET)) {
|
if (!jwt.verify(token, process.env.SECRET)) {
|
||||||
socket.send("JWT is not valid.");
|
socket.send("JWT is not valid.");
|
||||||
|
|
Loading…
Reference in New Issue