我是靠谱客的博主 拼搏铃铛,最近开发中收集的这篇文章主要介绍Vue 使用websocket,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Vue 使用websocket

  data() {
    return {
      data: 0,
      timeout: 30 * 1000, //30秒一次心跳
      timeoutObj: null, //心跳心跳倒计时
      serverTimeoutObj: null, //心跳倒计时
      timeoutnum: null, //断开 重连倒计时
      websocket: null,
    }
  },
  methods: {
    initWebSocket() {
      let url =''wss://localhost:8080''
      this.websocket = new WebSocket(url)
      // 连接错误
      this.websocket.onerror = this.setErrorMessage
      // 连接成功
      this.websocket.onopen = this.setOnopenMessage

      // 收到消息的回调
      this.websocket.onmessage = this.setOnmessageMessage

      // 连接关闭的回调
      this.websocket.onclose = this.setOncloseMessage

      // 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
      window.onbeforeunload = this.onbeforeunload
    },
    reset() {
      // 重置心跳
      // 清除时间
      clearTimeout(this.timeoutObj)
      clearTimeout(this.serverTimeoutObj)
      // 重启心跳
      this.start()
    },
    start() {
      // 开启心跳
      this.timeoutObj && clearTimeout(this.timeoutObj)
      this.serverTimeoutObj && clearTimeout(this.serverTimeoutObj)
      this.timeoutObj = setTimeout(() => {
        console.log('heartCheck', this.websocket.readyState)
        // 这里发送一个心跳,后端收到后,返回一个心跳消息,
        if (this.websocket && this.websocket.readyState == 1) {
          // 如果连接正常
          this.websocketsend('heartCheck')
        }
        this.serverTimeoutObj = setTimeout(() => {
          //超时关闭
          this.websocket.close()
        }, this.timeout)
      }, this.timeout)
    },
    setOnmessageMessage(event) {
      let obj = JSON.parse(event.data)
      console.log('obj', obj)
      switch (obj.type) {
        case 'heartCheck':
          //收到服务器信息,心跳重置
          console.log('接收到的服务器消息:', obj.data)
          this.reset()
          break
        case 'sendMessage':
          this.data = obj.data
          console.log('接收到的服务器消息:', obj.data)
      }
    },
    setErrorMessage() {
      console.log(
        'WebSocket连接发生错误'
      )
    },
    setOnopenMessage() {
      //开启心跳
      this.start()
      console.log(
        'WebSocket连接成功' 
      )
    },
    setOncloseMessage() {
      console.log(
        'WebSocket连接关闭'
      )
    },
    onbeforeunload() {
      this.closeWebSocket()
    },
    //websocket发送消息
    websocketsend(messsage) {
      this.websocket.send(messsage)
    },
    closeWebSocket() {
      // 关闭websocket
      this.websocket.close()
    },
  },
  //初始化
  created(){
   this.initWebSocket()
  },
  //销毁
  destroyed() {
    this.websocket.close()
  },

最后

以上就是拼搏铃铛为你收集整理的Vue 使用websocket的全部内容,希望文章能够帮你解决Vue 使用websocket所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部