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