VUE WebSocket

新建webSocket.js文件

let webSocket = null

let timer = null

export function warpAndSetWebSocket(ws) {

  const ws = new WebSocket(url)

  console.log('连接成功')

  if (webSocket) {

    try {

      webSocket.close()

    } catch (error) {

      console.log(error)

    }

  }

  ws.onopen = function(e) {

    console.log('open', e)

    // 给后端发心跳 30秒一次

     timer = setInterval(() => {

        sendMessage('heartbeat', null)

      }, 30000)

  }

  ws.onmessage = function(e) {

    console.log('message', e.data)

    const message = JSON.parse(e.data)

    const type = message.type

    if (type === 'heartbeat') {

      // pass 心跳

    } else if (type === 'text') {

      console.log('message.data', message.data)

    }

  }

  ws.onclose = function(e) {

    console.log('close', e)

  }

  ws.onerror = function(e) {

    console.log('错误', e)

  }

  webSocket = ws

}

// 关闭时候调用

export function removeAndCloseWebSocket() {

  console.log('退出登陆')

  // 关闭心跳

  clearInterval(timer)

  if (webSocket) {

    try {

      webSocket.close()

      webSocket = null

    } catch (error) {

      console.log(error)

    }

  }

}

// 给后端发送心跳

export function sendMessage(type, data) {

  let num = ''

  for (var i = 0; i < 32; i++) {

    num += parseInt(Math.random() * 10)

  }

  const timestamp = new Date().getTime()

  webSocket.send(JSON.stringify(

    {

      'id': num,

      'timestamp': timestamp,

      'type': type,

      'data': data

    }

  ))

}

在其他文件里引用

哪里开启哪里引用

console.log('process.env.AUTH_API', process.env.AUTH_API)

// url是后端地址

              this.url = process.env.AUTH_API.replace('http', 'ws') + '/hb-pcc-core/ws/connect?token=' + this.$store.getters.token

// 把url传到方法中

              warpAndSetWebSocket(this.url )

哪里关闭哪里调用连接

removeAndCloseWebSocket()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值