• vue中全局websocket


    1、创建 websocket.js 文件
    
    // 定义 websocket
    export default {
     ws: {},
     setWs: function(newWs) {
      this.ws = newWs
     },
    }
    2、在main.js 中引入
    import wsk from './utils/websocket.js' // 引入 websocket
    Vue.prototype.$wsk = wsk // 挂载
    3、在App.vue组件或者父组件中初始化 websocket
    
    -data中参数:
        ws: null,
       leave_page: false,
       is_first_in_page: true, // 判断是否是第一次进入页面,在 websocket 连接成功时判断是否调用子路由
    
    -methods 方法
      // 初始化 websocket
      initWebSocket() {
       if ('WebSocket' in window) {
        let url = `ws链接`
        this.ws = new WebSocket(url)
        this.ws.onopen = () => {
         this.$wsk.setWs(this.ws) // 连接成功后,赋值给全局对象 websocket
         console.log('连接 websocket 成功')
         if (this.is_first_in_page) return
         setTimeout(() => {
          console.log('重新调用组件中的方法进行发送信息')
          this.send_data()
         }, 100)
        }
        this.ws.onclose = e => {
         console.log('监听到websocket断开', e)
         // 如果是离开页面或者刷新的情况下,则不做重连,否则重连
         if (this.leave_page) {
          console.log('断开连接', e)
         } else {
          console.log('正在重连中')
          this.is_first_in_page = false // 设置为 false, 这样重连后就会调用组件中的方法来订阅信息
          this.initWebSocket()
         }
        }
       } else {
        // 浏览器不支持 WebSocket
        alert('您的浏览器不支持 WebSocket,建议使用谷歌浏览器')
       }
       setTimeout(() => {
        // 其他代码块
        return this.send_data()
       }, 100)
      },
      // 发送消息
      send_data() {
       let data = {
        type: 'send_data',
       }
       this.$wsk.ws.send(JSON.stringify(data))
       this.$wsk.ws.onmessage = this.websocketonmessage
      },
    websocketonmessage(e){
        console.log(e) // 接受消息
    }
    
    -destroyed 方法
    this.leave_page = true
      this.ws.close()
      this.ws = null
      this.$wsk.setWs(this.ws)
  • 相关阅读:
    Spring Boot中的JSON技术
    Spring Boot中编写单元测试
    如何保证事务方法的幂等
    定时重试线程池
    多线程导致事务失效-记一次性能优化
    自己实现一个简单的数据库事务
    服务器错误码国际化
    spring自定义自动配置注解
    springboot中如何启动tomcat
    用grep来查询日志
  • 原文地址:https://www.cnblogs.com/lyt520/p/16003855.html
Copyright © 2020-2023  润新知