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