关于javascript:微信小程序使用Stomp连接websockt

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;
    }
  },

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理