From 2dd39dc530c448297ed9cf78f7109f44bee66df4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A7=89?= Date: Sat, 21 Oct 2023 18:00:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=97=B6=E9=97=B4=E6=88=B3?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat.js | 16 +++++++++++++++- src/main.js | 18 +++++++++++++----- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/chat.js b/src/chat.js index ccd792f..8d6b9d5 100644 --- a/src/chat.js +++ b/src/chat.js @@ -65,7 +65,21 @@ export default class Chat { event.target.parentNode.parentNode.style.right = '50%' } if (event.ctrlKey && event.key === 'l') { - this.ul.innerHTML = '' + this.ul.innerHTML = '' // 清理屏幕 + // 获取当前时间戳 + const timestamp = new Date().getTime() + // 清理本地存储 + values(this.store).then(list => list.forEach(item => { + const t = new Date(item.time).getTime() + console.log('清理', item.id, t, timestamp) + if (t < timestamp) { + del(item.id, this.store) + console.log('清理成功', item.id) + } + })) + const time = new Date().toLocaleString() + console.log('清屏', `store-chat-${name}`, time) + localStorage.setItem(`store-chat-${name}`, time) } } }), diff --git a/src/main.js b/src/main.js index cf68c07..6e5ee00 100644 --- a/src/main.js +++ b/src/main.js @@ -149,11 +149,19 @@ const chat = new Chat({ // 与每个客户端都建立聊天信道 clientList.setChannel('chat', { onopen: async event => { - //console.debug('打开信道', event.target.label) - // 请求指定范围内的消息列表 - const start = new Date().getTime() - 1000 * 60 * 60 * 24 * 7 // 一周内的消息 - const end = new Date().getTime() - clientList.send('chat', JSON.stringify({ type: 'pull', start, end })) + // 请求指定范围内的消息列表(转换成时间戳) + const last = localStorage.getItem('store-chat-default') + const lastTimestamp = new Date(last).getTime() + console.log('上次清理消息时间:', last, lastTimestamp) + // 如果超过一周, 则只拉取一周内的消息 + if (lastTimestamp > new Date().getTime() - 1000 * 60 * 60 * 24 * 7) { + const start = new Date().getTime() - 1000 * 60 * 60 * 24 * 7 + const end = new Date().getTime() + clientList.send('chat', JSON.stringify({ type: 'pull', start, end })) + return + } + // 否则拉取时间戳范围内的消息 + clientList.send('chat', JSON.stringify({ type: 'pull', start: lastTimestamp, end: new Date().getTime() })) }, onmessage: async (event, client) => { const data = JSON.parse(event.data)