From 61eb7a6ee20164715f39e5c3eeed82186b53c3bd Mon Sep 17 00:00:00 2001 From: Mystikfluu Date: Sun, 10 Jul 2022 16:37:23 +0200 Subject: [PATCH] redesigned websocket messages sends messages in JSON now posts are more responsive --- js/posts.js | 20 +++++++++++++++----- server.js | 17 ++++++++++++++++- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/js/posts.js b/js/posts.js index 9ab3b33..54628cc 100644 --- a/js/posts.js +++ b/js/posts.js @@ -8,14 +8,24 @@ const wss_URI = wss_server + ":" + wss_port var reply_id = 0 let socket = new WebSocket(wss_URI); -socket.addEventListener("message", function (event) { +socket.addEventListener("message", async function (event) { if(wss_server == event.origin) { let data = event.data; - let ds = data.split(" ") - let message = ds[0] + let ds = JSON.parse(data) + let message = ds.message + let post = ds.data + let username = post.post_user_name if(message == "new_post") { - main() - if(user["username"]!=ds[1])mainNoti(ds[1]) + await createPost(decodeURIComponent(item.post_user_name),decodeURIComponent(item.post_text),item.post_time,item.post_special_text,highest_id+1,item.post_from_bot,item.post_reply_id) + if(user["username"]!=username)mainNoti(username) + + let highest_known_posts = await (await fetch("/api/getPostsLowerThan?id="+(highest_id+28))).json() + for (let i = 0; i < highest_known_posts.length; i++) { + if(document.getElementById(highest_known_posts[i].post_id) == undefined) { + main() + return; + } + } } } }) diff --git a/server.js b/server.js index e509594..2876ff0 100644 --- a/server.js +++ b/server.js @@ -667,8 +667,23 @@ router.post("/api/post", async function(req,res) { con.query(sql, values, function (err, result) { if (err) throw err; if(req.body.receiver == "everyone") { + let post_obj = { + post_user_name: encodeURIComponent(res.locals.username), + post_text: req.body.message, + post_time: Date.now(), + post_special_text: "", + post_receiver_name: "everyone", + post_from_bot: res.locals.isbot, + post_reply_id: reply_id + } + + let message = { + message: "new_post", + data: post_obj + } + let messagestr = JSON.stringify(message) wss.clients.forEach(function(ws) { - ws.send(`new_post ${res.locals.username} ${req.body.message}`) + ws.send(messagestr) }); } res.json({"success":"successfully posted message"})