129 lines
2.7 KiB
JavaScript
129 lines
2.7 KiB
JavaScript
![]() |
let socketOpen = false;
|
|||
|
let socketMsgQueue = [];
|
|||
|
let cashierInfo = uni.getStorageSync('cashierInfo')
|
|||
|
|
|||
|
export default {
|
|||
|
client: null,
|
|||
|
baseURL: 'ws://localhost:17878/socket',
|
|||
|
storeId:'',
|
|||
|
cashierId:'',
|
|||
|
header: {
|
|||
|
login: '',
|
|||
|
passcode: '',
|
|||
|
},
|
|||
|
init(storeId,cashierId) {
|
|||
|
// this.storeId = storeId
|
|||
|
// this.cashierId = cashierId
|
|||
|
this.baseURL = storeId
|
|||
|
this.header = cashierId
|
|||
|
if (this.client) {
|
|||
|
return Promise.resolve(this.client);
|
|||
|
}
|
|||
|
|
|||
|
return new Promise((resolve, reject) => {
|
|||
|
const ws = {
|
|||
|
send: this.sendMessage,
|
|||
|
onopen: null,
|
|||
|
onmessage: null,
|
|||
|
close: this.closeSocket,
|
|||
|
};
|
|||
|
|
|||
|
uni.connectSocket({
|
|||
|
url: this.baseURL,
|
|||
|
header: this.header,
|
|||
|
});
|
|||
|
|
|||
|
uni.onSocketOpen(function(res) {
|
|||
|
console.log('WebSocket连接已打开!', res);
|
|||
|
|
|||
|
socketOpen = true;
|
|||
|
console.log('socketMsgQueue',socketMsgQueue)
|
|||
|
for (let i = 0; i < socketMsgQueue.length; i++) {
|
|||
|
ws.send(socketMsgQueue[i]);
|
|||
|
}
|
|||
|
socketMsgQueue = [];
|
|||
|
|
|||
|
ws.onopen && ws.onopen();
|
|||
|
});
|
|||
|
|
|||
|
uni.onSocketMessage(function(res) {
|
|||
|
console.log(res)
|
|||
|
ws.onmessage && ws.onmessage(res);
|
|||
|
uni.$emit('sendMessage',res);
|
|||
|
});
|
|||
|
|
|||
|
uni.onSocketError(function(res) {
|
|||
|
console.log('WebSocket 错误!', res);
|
|||
|
|
|||
|
this.client?.disconnect();
|
|||
|
this.client = null;
|
|||
|
socketOpen = false;
|
|||
|
uni.$emit('socketError');
|
|||
|
reject(res);
|
|||
|
|
|||
|
});
|
|||
|
|
|||
|
// uni.onSocketClose((res) => {
|
|||
|
// this.client.disconnect();
|
|||
|
// this.client = null;
|
|||
|
// socketOpen = false;
|
|||
|
// console.log('WebSocket 已关闭!', res);
|
|||
|
// this.init(this.storeId,this.cashierId)
|
|||
|
|
|||
|
// });
|
|||
|
|
|||
|
const Stomp = require('./stomp.js').Stomp;
|
|||
|
Stomp.setInterval = function(interval, f) {
|
|||
|
return setInterval(f, interval);
|
|||
|
};
|
|||
|
Stomp.clearInterval = function(id) {
|
|||
|
return clearInterval(id);
|
|||
|
};
|
|||
|
|
|||
|
const client = this.client = Stomp.over(ws);
|
|||
|
client.connect(this.header, ()=>{
|
|||
|
|
|||
|
console.log('stomp connected');
|
|||
|
|
|||
|
// client.subscribe("/exchange/cashir_status_exchange", (res) => {
|
|||
|
// // resolve(res);
|
|||
|
// uni.$emit('sendMessage',res);
|
|||
|
|
|||
|
// }, {
|
|||
|
// 'x-queue-name': 'StoreId:' + this.storeId + 'CashierId:' +
|
|||
|
// this.cashierId,
|
|||
|
|
|||
|
// 'durable': true,
|
|||
|
// 'auto-delete': true,
|
|||
|
// 'exclusive': false
|
|||
|
// });
|
|||
|
|
|||
|
|
|||
|
});
|
|||
|
});
|
|||
|
},
|
|||
|
disconnect() {
|
|||
|
uni.closeSocket();
|
|||
|
},
|
|||
|
sendMessage(message) {
|
|||
|
console.log(66,message,socketOpen)
|
|||
|
if (socketOpen) {
|
|||
|
console.log(11111,message)
|
|||
|
uni.sendSocketMessage({
|
|||
|
data: message,
|
|||
|
success: (res) => {
|
|||
|
console.log('发送成功'+JSON.stringify(res));
|
|||
|
},
|
|||
|
fail(err) {
|
|||
|
console.log('发送失败'+err);
|
|||
|
// 发送失败处理
|
|||
|
}
|
|||
|
});
|
|||
|
} else {
|
|||
|
socketMsgQueue.push(message);
|
|||
|
}
|
|||
|
},
|
|||
|
closeSocket() {
|
|||
|
console.log('closeSocket');
|
|||
|
},
|
|||
|
};
|