2025-05-30 09:23:43 +08:00

129 lines
2.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let socketOpen = false;
let socketMsgQueue = [];
let cashierInfo = uni.getStorageSync('cashierInfo')
export default {
client: null,
baseURL: 'ws://localhost:18878/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');
},
};