<script>
export default {
data() {
return {
websock: null,
timer: "",
startTime: "",
endTime: "",
};
},
created() {
this.initWebSocket();
},
destroyed() {
this.websock.close(); //离开路由之后断开websocket连接
},
methods: {
heartbeat() {
clearInterval(this.timer);
this.timer = setInterval(() => {
if (this.endTime != "") {
console.log(this.endTime, "endTime", this.startTime - this.endTime);
if (this.startTime - this.endTime >= 5000) {
console.log("重新链接!");
this.initWebSocket();
this.endTime = "";
this.startTime = "";
}
}
this.startTime = Date.parse(new Date());
console.log(this.startTime, "startTime");
if (this.startTime - this.endTime <= 5000 || this.endTime == "") {
this.websocketsend("heartbeat");
}
}, 1000);
},
initWebSocket() {
//初始化weosocket
const wsuri = "ws://touhaowanjia.boruixinyu.com:2323/thwjsocket/1";
this.websock = new WebSocket(wsuri);
this.websock.onmessage = this.websocketonmessage;
this.websock.onopen = this.websocketonopen;
this.websock.onerror = this.websocketonerror;
this.websock.onclose = this.websocketclose;
},
websocketonopen() {
//连接建立之后执行send方法发送数据
this.heartbeat();
},
websocketonerror() {
//连接建立失败重连
// this.initWebSocket();
},
websocketonmessage(e) {
//数据接收
const redata = (e.data);
console.log(e.data)
if (redata.command == "start") {
// 开始游戏
// this.$refs["success"].r();
this.GAMEOVER = false;
} else if (redata.command == "stop") {
// 结束游戏
} else if (redata.command == "recover") {
// 重置
} else if (redata.command == "opScore") {
// 显示分数
} else if (redata == "heartbeat") {
// 心跳
console.log(redata, "心跳");
this.endTime = Date.parse(new Date());
}
},
websocketsend(Data) {
//数据发送
this.websock.send(Data);
},
websocketclose(e) {
//关闭
console.log("断开连接", e);
},
},
};
</script>