From abcbe39d4f2cba799140bc6564b712b09b1f6f88 Mon Sep 17 00:00:00 2001 From: jmal Date: Thu, 25 Jul 2024 15:28:04 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96sse=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ShowFile/ShowFile.vue | 1 - src/sse/SSEClient.js | 22 ++++++++++++++++++++-- src/store/modules/user.js | 1 - 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/components/ShowFile/ShowFile.vue b/src/components/ShowFile/ShowFile.vue index ea000be..bb7612e 100644 --- a/src/components/ShowFile/ShowFile.vue +++ b/src/components/ShowFile/ShowFile.vue @@ -1351,7 +1351,6 @@ export default { keydown(event) { const { keyCode } = event const isCmd = this.checkCmdKey(event) - console.log('keydown', 'keyCode', keyCode, 'isCmd', isCmd) const checkPreviewVisible = this.checkPreviewVisible() // space diff --git a/src/sse/SSEClient.js b/src/sse/SSEClient.js index 3f428df..23f22c9 100644 --- a/src/sse/SSEClient.js +++ b/src/sse/SSEClient.js @@ -5,6 +5,7 @@ import { generateUUID } from "ant-design-vue/lib/vc-select/util"; let eventSource = null; let timer = null; +let lastHeartbeat = new Date().getTime(); const uuid = generateUUID(); const throttledConnectSSE = _.throttle((username) => { @@ -31,11 +32,16 @@ function connectToSSE(username) { eventSource.addEventListener('message', handleMessage); eventSource.addEventListener('error', handleError.bind(null, username)); + startHeartbeatCheck(username); } function handleMessage(event) { - const msg = JSON.parse(event.data); - onMessage(msg); + if (event.data === 'h') { + lastHeartbeat = new Date().getTime(); + } else { + const msg = JSON.parse(event.data); + onMessage(msg); + } } function handleError(username) { @@ -49,6 +55,18 @@ function clearExistingTimer() { } } +function startHeartbeatCheck(username) { + clearExistingTimer(); + timer = setInterval(() => { + if (eventSource.readyState === 1 && new Date().getTime() - lastHeartbeat > 5000) { + eventSource.close(); + } + if (eventSource.readyState === 2) { + throttledConnectSSE(username); + } + }, 3000); +} + function onMessage(msg) { const { url, body } = msg; const eventMapping = { diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 75c10f0..9de0f06 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -209,7 +209,6 @@ const actions = { // update token setToken({ commit }, jmalToken) { commit('SET_TOKEN', jmalToken) - console.log('jmalToken', jmalToken) }, // remove share token