From ff7ecd270c7d0b2cd1dd2ec078df0dbe62aad08d Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 21 一月 2021 09:24:58 +0800
Subject: [PATCH] Merge pull request #43 from lawrencehj/master

---
 web_src/src/components/UiHeader.vue |   56 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 53 insertions(+), 3 deletions(-)

diff --git a/web_src/src/components/UiHeader.vue b/web_src/src/components/UiHeader.vue
index 832d69e..f16beba 100644
--- a/web_src/src/components/UiHeader.vue
+++ b/web_src/src/components/UiHeader.vue
@@ -4,7 +4,7 @@
             <el-menu-item index="/">鎺у埗鍙�</el-menu-item>
             <el-menu-item index="/videoList">璁惧鍒楄〃</el-menu-item>
             <!-- <el-menu-item index="/videoReplay">褰曞儚鍥炵湅</el-menu-item> -->
-            <!-- <el-menu-item index="4">绾ц仈璁剧疆</el-menu-item> -->
+            <el-switch v-model="alarmNotify"  active-text="鎶ヨ淇℃伅鎺ㄩ��" style="display: block float: right" @change="sseControl"></el-switch>
             <el-menu-item style="float: right;" @click="loginout">閫�鍑�</el-menu-item>
         </el-menu>
 	</div>
@@ -13,14 +13,64 @@
 <script>
 export default {
     name: "UiHeader",
+    components: { Notification },
+    data() {
+        return {
+            alarmNotify: true,
+            sseSource: null,
+        };
+    },
     methods:{
 
   	    loginout(){
             // 鍒犻櫎cookie锛屽洖鍒扮櫥褰曢〉闈�
             this.$cookies.remove("session");
             this.$router.push('/login');
+            this.sseSource.close();
         },
-    }
-}
+        beforeunloadHandler() {
+            this.sseSource.close();
+        },
+        sseControl() {
+            let that = this;
+            if (this.alarmNotify) {
+                this.sseSource = new EventSource('/api/emit'); 
+        	    this.sseSource.addEventListener('message', function(evt) {
+                    that.$notify({
+                        title: '鏀跺埌鎶ヨ淇℃伅',
+                        dangerouslyUseHTMLString: true,
+                        message: evt.data,
+                        type: 'warning'
+                    });
+	                console.log("鏀跺埌淇℃伅锛�" + evt.data);
+        	    });
+	            this.sseSource.addEventListener('open', function(e) {
+        	        console.log("SSE杩炴帴鎵撳紑.");
+	            }, false);
+        	    this.sseSource.addEventListener('error', function(e) {
+	                if (e.target.readyState == EventSource.CLOSED) {
+	                    console.log("SSE杩炴帴鍏抽棴");
+        	        } else {
+	                    console.log(e.target.readyState);
+        	        }
+	            }, false);
+            } else {
+                this.sseSource.removeEventListener('open', null);
+                this.sseSource.removeEventListener('message', null);
+                this.sseSource.removeEventListener('error', null);
+                this.sseSource.close();
+            } 
+        }
+    },
+    mounted() {
+        window.addEventListener('beforeunload', e => this.beforeunloadHandler(e))
+        // window.addEventListener('unload', e => this.unloadHandler(e))
+        this.sseControl();
+    },
+    destroyed() {
+        window.removeEventListener('beforeunload', e => this.beforeunloadHandler(e))
+        // window.removeEventListener('unload', e => this.unloadHandler(e))
+    },
+ }
 
 </script>

--
Gitblit v1.8.0