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