websocket连接加心跳

<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>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容