From 20e9f4940e9f3d3176d649ea9373355ae1462c7e Mon Sep 17 00:00:00 2001 From: Miao_Spring <539943419@qq.com> Date: Fri, 22 Mar 2024 22:58:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3AES=E5=8A=A0=E5=AF=86?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E4=B8=AD=E5=AF=B9emoji=E5=A4=84?= =?UTF-8?q?=E7=90=86=E7=9A=84=E7=BC=96=E7=A0=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 8 +-- package.json | 2 +- server.js | 19 ++++--- src/App.vue | 26 ++++----- src/func/download.js | 18 +++--- src/func/upload.js | 9 ++- src/views/chat.vue | 132 ++++++++++++++++++++++++++++++++++--------- 7 files changed, 151 insertions(+), 63 deletions(-) diff --git a/package-lock.json b/package-lock.json index c1521ff..b389250 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "crypto-js": "^4.2.0", "express": "^4.18.2", "file-saver": "^2.0.5", - "js-base64": "^3.7.6", + "js-base64": "^3.7.7", "pinia": "^2.1.7", "sm-crypto": "^0.3.13", "uuid": "^9.0.1", @@ -1568,9 +1568,9 @@ } }, "node_modules/js-base64": { - "version": "3.7.6", - "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.6.tgz", - "integrity": "sha512-NPrWuHFxFUknr1KqJRDgUQPexQF0uIJWjeT+2KjEePhitQxQEx5EJBG1lVn5/hc8aLycTpXrDOgPQ6Zq+EDiTA==" + "version": "3.7.7", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.7.tgz", + "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==" }, "node_modules/jsbn": { "version": "1.1.0", diff --git a/package.json b/package.json index f25e9d3..17af1a2 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "crypto-js": "^4.2.0", "express": "^4.18.2", "file-saver": "^2.0.5", - "js-base64": "^3.7.6", + "js-base64": "^3.7.7", "pinia": "^2.1.7", "sm-crypto": "^0.3.13", "uuid": "^9.0.1", diff --git a/server.js b/server.js index c3b7997..8603fc3 100644 --- a/server.js +++ b/server.js @@ -230,8 +230,8 @@ const server = http.createServer(app); const wss = new WebSocketServer({ server }); // 先实现最低限度功能,暂时不考虑身份认证 const groupsMap = {}; -// 三天不活跃的群组将被清除 -const LifeOfGroup = millisecondsOfOneDay * 3; +// 一天不活跃的群组将被清除 +const LifeOfGroup = millisecondsOfOneDay * 1; // const LifeOfGroup = 0; // 根据uuid查询加入的群组 const uuid2Groups={} @@ -287,11 +287,11 @@ function createGroupTableDB(gID, verify) { } // 插入信息 -function insertMessageByGID(gID, msg, from) { +function insertMessageByGID(gID, msg, from, timestamp) { if (!generateStmt_insertMessage_map[gID]) { generateStmt_insertMessage_map[gID] = db.prepare(`INSERT INTO ${gID} (message,type,sender, timestamp) VALUES (?, ?, ?, ?)`); } - generateStmt_insertMessage_map[gID].run(msg, "gMsg", from, parseInt(Date.now())); + generateStmt_insertMessage_map[gID].run(msg, "gMsg", from, timestamp); } function updateActiveTimestamp(gID) { @@ -326,12 +326,13 @@ function getHistory(gID) { } function broadcastMsg(gID, msg, from) { + const timestamp = parseInt(Date.now()) initMsgHistory(gID) updateActiveTimestamp(gID); - insertMessageByGID(gID, msg, from); + insertMessageByGID(gID, msg, from, timestamp); - let bmsg = JSON.stringify({ type: "gMsg", gID, msg }); - groupsMap[gID].msgHistory.push({ type: "gMsg", msg, from }); + let bmsg = JSON.stringify({ type: "gMsg", gID, msg, from, timestamp }); + groupsMap[gID].msgHistory.push({ type: "gMsg", msg, from, timestamp }); for (let socket of groupsMap[gID].member) { socket.send(bmsg); } @@ -342,10 +343,10 @@ function initMsgHistory(gID){ let verify = stmt_getGroupVerify.get(gID).verify; // 暂时这么写 let msgHistory = db - .prepare(`SELECT message,type FROM ${gID}`) + .prepare(`SELECT message,type,sender,timestamp FROM ${gID}`) .all() .map(v => { - return { msg: v.message, type: v.type }; + return { type: v.type, msg: v.message,from:v.sender,timestamp:v.timestamp }; }); // console.log(msgHistory) groupsMap[gID] = { verify, member: [], msgHistory }; diff --git a/src/App.vue b/src/App.vue index d194142..c8acd07 100644 --- a/src/App.vue +++ b/src/App.vue @@ -53,21 +53,19 @@ const menuOptions = [