129 lines
2.7 KiB
JavaScript
Raw Permalink Normal View History

2025-03-11 17:57:17 +08:00
let socketOpen = false;
let socketMsgQueue = [];
let cashierInfo = uni.getStorageSync('cashierInfo')
export default {
client: null,
2025-05-30 09:23:43 +08:00
baseURL: 'ws://localhost:18878/socket',
2025-03-11 17:57:17 +08:00
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');
},
};