添加报警响应、发布和SSE推送功能
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -9,10 +9,13 @@ import VueCookies from 'vue-cookies';
|
||||
import echarts from 'echarts';
|
||||
|
||||
import VueClipboard from 'vue-clipboard2'
|
||||
import { Notification } from 'element-ui';
|
||||
|
||||
Vue.use(VueClipboard)
|
||||
Vue.use(ElementUI);
|
||||
Vue.use(VueCookies);
|
||||
Vue.prototype.$axios = axios;
|
||||
Vue.prototype.$notify = Notification;
|
||||
|
||||
axios.defaults.baseURL = (process.env.NODE_ENV === 'development') ? process.env.BASE_API : "";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user