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;
}
},
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。