diff --git a/stdiet-ui/src/layout/components/Navbar.vue b/stdiet-ui/src/layout/components/Navbar.vue index cb6a5d8b8..ee333af6c 100644 --- a/stdiet-ui/src/layout/components/Navbar.vue +++ b/stdiet-ui/src/layout/components/Navbar.vue @@ -28,8 +28,8 @@ trigger="click" > <div class="avatar-wrapper"> - <img :src="avatar" class="user-avatar" /> - <i class="el-icon-caret-bottom" /> + <img :src="avatar" class="user-avatar" alt="avatar" /> + <em class="el-icon-caret-bottom" /> </div> <el-dropdown-menu slot="dropdown"> <router-link to="/user/profile"> @@ -51,7 +51,7 @@ import { mapGetters, mapActions } from "vuex"; import Breadcrumb from "@/components/Breadcrumb"; import Hamburger from "@/components/Hamburger"; -import { keys } from "@/utils/websocket"; +import { keys, websocketInit, beforeUnmount } from "@/utils/websocket"; export default { components: { @@ -65,12 +65,14 @@ export default { }, created() { this.init(); + websocketInit(); }, mounted() { window.postMessage({ type: keys.GET_UNREAD_COUNT }, window.location.origin); window.addEventListener("message", this.handleOnMessage); }, unmounted() { + beforeUnmount(); window.removeEventListener("message", this.handleOnMessage); }, computed: { diff --git a/stdiet-ui/src/main.js b/stdiet-ui/src/main.js index 4b1842ad8..f73283d27 100644 --- a/stdiet-ui/src/main.js +++ b/stdiet-ui/src/main.js @@ -21,14 +21,10 @@ import VueScrollTo from "vue-scrollto"; import VueResource from "vue-resource"; import HighchartsVue from "highcharts-vue"; import Highcharts from "highcharts"; -import { init } from "@/utils/websocket"; //图片导出模块 import exportingInit from "highcharts/modules/exporting"; exportingInit(Highcharts); -// websocket 初始化 -init(); - import { addDateRange, download, diff --git a/stdiet-ui/src/utils/websocket.js b/stdiet-ui/src/utils/websocket.js index 5f944280b..7d6554c69 100644 --- a/stdiet-ui/src/utils/websocket.js +++ b/stdiet-ui/src/utils/websocket.js @@ -41,21 +41,31 @@ function connect() { // console.log({ event }); ws = undefined; window.removeEventListener("message", handleOnMessageReceive); + + websocketInit(); }; ws.onclose = event => { + // console.log(event); ws = undefined; window.removeEventListener("message", handleOnMessageReceive); + if (event.reason !== "unmount") { + websocketInit(); + } }; } catch (error) { // console.log(error); + // console.log("浏览器不支持websocket"); ws = undefined; - init(); - console.log("浏览器不支持websocket"); + websocketInit(); } } -export function init() { +export function beforeUnmount(code) { + ws && ws.close(code, "unmount"); +} + +export function websocketInit() { !ws && connect(); !ws &&