1
const Stomp = require('./utils/stomp.js').Stomp;

/** 开启长连接 */
  onConnectSocket() {
    var socketOpen = false
    var socketMsgQueue = []
    function sendSocketMessage(msg) {
      if (socketOpen) {
        wx.sendSocketMessage({
          data: msg
        })
      } else {
        socketMsgQueue.push(msg)
      }
    }

    /**这里是连接数据用的*/
    var websocketParams = {
      send: sendSocketMessage,
      onopen: null,
      onmessage: null,
      close: () => { 
        if(this.client){
          this.client = null;
        }
      }
    }

    wx.connectSocket({
      url: 'wss://123456789.com:9000'
    })

    wx.onSocketOpen(function (res) {
      socketOpen = true
      for (var i = 0; i < socketMsgQueue.length; i++) {
        sendSocketMessage(socketMsgQueue[i])
      }
      socketMsgQueue = []
      websocketParams.onopen && websocketParams.onopen()
    })
    let list = this.globalData.equipmentList || [];

    wx.onSocketMessage((res) => {
        /**处理数据   我这里后台给我得数据是字符串,且需要截取  start*/
      var buffer = res.data;
      var dataview = new DataView(buffer);
      var ints = new Uint8Array(buffer.byteLength);
      var str = '';
      for (var i = 0; i < ints.length; i++) {
        str += String.fromCharCode(dataview.getUint8(i));
      }
      let params = str.indexOf("{") !== -1 ? str.slice(str.indexOf("{") - 1, str.lastIndexOf('}') + 1) : '';
        /**处理数据   我这里后台给我得数据是字符串,且需要截取  end*/

      if (params) {
        params = params.replace(/(\r\n|\n|\r)/gm, '');
        params = JSON.parse(params);
           list.push(params)
         this.globalData.equipmentList = list;
      }
      websocketParams.onmessage && websocketParams.onmessage(res);
    })

    /**这里一定要写  Stomp小程序版没有window所以重新赋值*/
    Stomp.setInterval = function (interval, f) {
      return setInterval(f, interval);
    };
    
    /**这里一定要写  Stomp小程序版没有window所以重新赋值*/
    Stomp.clearInterval = function (id) {
      return clearInterval(id);
    };

    this.client = Stomp.over(websocketParams);
    this.client.connect('账号', '密码',  (frame)=> {
       /** queue/MD210001 订阅队列*/
      this.client.subscribe(`/queue/MD210001`, function (txt) {})
      // this.client.send("/queue/MD210002", { priority: 9 }, "Hello, MD210002");
    })
  },

/**断开连接*/
  onCloseSocket(){
    if(this.client){
      this.client.disconnect(res=>{
        console.log("断开连接",res)
      })
      this.client = null;
    }
  },

离开我熟悉的地方
68 声望3 粉丝

少年剑未配托,出门便是江湖