<template>
|
<div class="avue-logo">
|
<transition name="fade">
|
<span v-if="keyCollapse"
|
class="avue-logo_subtitle"
|
key="0">
|
<i class="icon-baoan"></i>
|
</span>
|
</transition>
|
<transition-group name="fade">
|
<template v-if="!keyCollapse">
|
<span class="avue-logo_title"
|
key="1">{{website.indexTitle}} </span>
|
</template>
|
</transition-group>
|
</div>
|
</template>
|
|
<script>
|
import { mapGetters } from "vuex";
|
export default {
|
name: "logo",
|
data() {
|
return {};
|
},
|
created() {
|
// this.websocketStart();
|
},
|
computed: {
|
...mapGetters(["website", "keyCollapse"])
|
},
|
methods: {
|
//启动websocket
|
websocketStart() {
|
var that = this;
|
|
if (!window.WebSocket) {
|
window.WebSocket = window.MozWebSocket;
|
}
|
if (window.WebSocket) {
|
// https
|
// window.socket = new WebSocket("wss://web.byisf.com/wss/websocket/");
|
|
//http
|
window.socket = new WebSocket("ws://localhost:9034/websocket");
|
|
window.socket.onopen = function (event) {};
|
|
window.socket.onclose = function (event) {};
|
window.socket.error = function (event) {
|
//执行重连
|
that.websocketStart();
|
};
|
} else {
|
console.log("WebSocket连接没有建立成功!!");
|
}
|
|
setTimeout(function () {
|
window.clearTimeout(window.websockPing);
|
|
if (!window.WebSocket) {
|
return;
|
}
|
if (window.socket.readyState == WebSocket.OPEN) {
|
var userId = JSON.parse(
|
window.localStorage.getItem("-userInfo")
|
).content.user_id;
|
|
window.socket.send(userId);
|
|
//开启心跳传送
|
window.websockPing = setInterval(function () {
|
if (window.socket.readyState == WebSocket.OPEN) {
|
window.socket.send("ping");
|
} else {
|
console.log("心跳停止,断开重连");
|
//断开连接,重连
|
window.clearTimeout(window.websockPing);
|
//执行重连
|
that.websocketStart();
|
}
|
}, 4000);
|
} else {
|
console.log("WebSocket连接没有建立成功!!");
|
//执行重连
|
that.websocketStart();
|
}
|
}, 1000);
|
},
|
}
|
};
|
</script>
|
|
<style lang="scss">
|
.fade-leave-active {
|
transition: opacity 0.2s;
|
}
|
.fade-enter-active {
|
transition: opacity 2.5s;
|
}
|
.fade-enter,
|
.fade-leave-to {
|
opacity: 0;
|
}
|
.avue-logo {
|
position: fixed;
|
top: 0;
|
left: 0;
|
width: 240px;
|
height: 64px;
|
line-height: 64px;
|
background-color: #20222a;
|
font-size: 20px;
|
overflow: hidden;
|
box-sizing: border-box;
|
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15);
|
color: rgba(255, 255, 255, 0.8);
|
z-index: 1024;
|
&_title {
|
display: block;
|
text-align: center;
|
font-weight: 300;
|
font-size: 20px;
|
}
|
&_subtitle {
|
display: block;
|
text-align: center;
|
font-size: 18px;
|
font-weight: bold;
|
color: #fff;
|
}
|
}
|
</style>
|