From b795f534a00c39ff97ff6069aca7908fbf44141c Mon Sep 17 00:00:00 2001 From: ldj_willow <ldj_willow@163.com> Date: Thu, 3 Nov 2022 13:25:24 +0800 Subject: [PATCH] =?UTF-8?q?15=E5=88=86=E9=92=9F=E6=9C=AA=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- acs/nladmin-ui/src/App.vue | 76 +++++++++++--------------------------- lms/nladmin-ui/src/App.vue | 76 +++++++++++--------------------------- 2 files changed, 42 insertions(+), 110 deletions(-) diff --git a/acs/nladmin-ui/src/App.vue b/acs/nladmin-ui/src/App.vue index 3f8e408..2f82bcc 100644 --- a/acs/nladmin-ui/src/App.vue +++ b/acs/nladmin-ui/src/App.vue @@ -1,5 +1,5 @@ <template> - <div id="app"> + <div id="app" @mousemove="moveEvent" @click="moveEvent"> <router-view /> </div> </template> @@ -7,63 +7,29 @@ <script> export default { name: 'App', - created() { - this.webSocket() // token过期提示 + data() { + return { + timmer: null + } }, methods: { - webSocket() { - const that = this - if (typeof (WebSocket) === 'undefined') { - this.$notify({ - title: '提示', - message: '当前浏览器无法接收实时报警信息,请使用谷歌浏览器!', - type: 'warning', - duration: 0 - }) - } else { - const id = 'exp-token' - // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改 - // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送 - // const socketUrl = process.env.VUE_APP_WS_API + id - const wsUri = window.g.prod.VUE_APP_BASE_API.replace('http', 'ws') + '/webSocket/' + id - this.socket = new WebSocket(wsUri) - // 监听socket打开 - this.socket.onopen = function() { - that.socket.send('测试客户端发送消息') - } - const _this = this - // 监听socket消息接收 - this.socket.onmessage = function(msg) { - const data = JSON.parse(msg.data) - _this.$confirm(data.msg, '提示', { - confirmButtonText: '确定', - closeOnClickModal: false, - showCancelButton: false, - type: 'warning' - }).then(() => { - _this.$router.push('/login') - }).catch(() => { - this.$message({ - type: 'info', - message: '已取消' - }) - }) - } - - // 监听socket错误 - this.socket.onerror = function() { - that.$notify({ - title: '错误', - message: '服务器错误,无法接收实时报警信息', - type: 'error', - duration: 0 - }) - } - // 监听socket关闭 - this.socket.onclose = function() { - console.log('WebSocket已关闭') - } + moveEvent: function() { + const path = ['/login'] + if (!path.includes(this.$route.path)) { + clearTimeout(this.timmer) + this.init() } + }, + init: function() { + this.timmer = setTimeout(() => { + sessionStorage.clear() + this.logout() + }, 1000 * 60 * 15) // 15分钟 https://blog.csdn.net/qq_42345108/article/details/103496456 + }, + logout() { + this.$store.dispatch('LogOut').then(() => { + location.reload() + }) } } } diff --git a/lms/nladmin-ui/src/App.vue b/lms/nladmin-ui/src/App.vue index 3f8e408..2f82bcc 100644 --- a/lms/nladmin-ui/src/App.vue +++ b/lms/nladmin-ui/src/App.vue @@ -1,5 +1,5 @@ <template> - <div id="app"> + <div id="app" @mousemove="moveEvent" @click="moveEvent"> <router-view /> </div> </template> @@ -7,63 +7,29 @@ <script> export default { name: 'App', - created() { - this.webSocket() // token过期提示 + data() { + return { + timmer: null + } }, methods: { - webSocket() { - const that = this - if (typeof (WebSocket) === 'undefined') { - this.$notify({ - title: '提示', - message: '当前浏览器无法接收实时报警信息,请使用谷歌浏览器!', - type: 'warning', - duration: 0 - }) - } else { - const id = 'exp-token' - // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改 - // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送 - // const socketUrl = process.env.VUE_APP_WS_API + id - const wsUri = window.g.prod.VUE_APP_BASE_API.replace('http', 'ws') + '/webSocket/' + id - this.socket = new WebSocket(wsUri) - // 监听socket打开 - this.socket.onopen = function() { - that.socket.send('测试客户端发送消息') - } - const _this = this - // 监听socket消息接收 - this.socket.onmessage = function(msg) { - const data = JSON.parse(msg.data) - _this.$confirm(data.msg, '提示', { - confirmButtonText: '确定', - closeOnClickModal: false, - showCancelButton: false, - type: 'warning' - }).then(() => { - _this.$router.push('/login') - }).catch(() => { - this.$message({ - type: 'info', - message: '已取消' - }) - }) - } - - // 监听socket错误 - this.socket.onerror = function() { - that.$notify({ - title: '错误', - message: '服务器错误,无法接收实时报警信息', - type: 'error', - duration: 0 - }) - } - // 监听socket关闭 - this.socket.onclose = function() { - console.log('WebSocket已关闭') - } + moveEvent: function() { + const path = ['/login'] + if (!path.includes(this.$route.path)) { + clearTimeout(this.timmer) + this.init() } + }, + init: function() { + this.timmer = setTimeout(() => { + sessionStorage.clear() + this.logout() + }, 1000 * 60 * 15) // 15分钟 https://blog.csdn.net/qq_42345108/article/details/103496456 + }, + logout() { + this.$store.dispatch('LogOut').then(() => { + location.reload() + }) } } }