最近在做一个自动售货机小程序,扫码开门,选购完商品后关门结算,需要使用到WebSocket连接,根据WebSocket下发的指令进行逻辑处理
小程序页面内扫码
// 判断是否登录
if (!app.globalData.token || !app.globalData.userInfo) {
console.log(11112);
wx.navigateTo({
url: '../login-wx/login-wx',
})
} else {
//开启扫码
wx.scanCode({
success: (res) => {
console.log(res);
// 判断是否是商城二维码
if (res.result.slice(0, 33) == "https://admin.aaaaaaa.cn/sanCode?") {
//定义一个空对象
var obj = {};
var allData = {}
var str = res.result.split("https://admin.aaaaaaa.cn/sanCode?")[1];
//&符号进行分割
var arr = str.split("&");
obj.eqmId = arr[0].split("=")[1];
obj.doorSort = arr[1].split("=")[1];
allData.command = "07";
allData.content = obj;
console.log(JSON.stringify(allData));
var retus = JSON.stringify(allData);
wx.setStorageSync('scanResults', retus)
//检查用户是否开通了免密支付
config.reqestApi2(app.globalData.api + `/aaaPay/wx/abc`).then(res => {
console.log("微信支付分查询结果=============", res);
if (res.data.code == 200) {
wx.showModal({
title: "温馨提示!",
content: '立即开门进行选购商品?',
confirmText: "开门",
success(res) {
if (res.confirm) {
wx.closeSocket()
let codeData = wx.getStorageSync('scanResults')
let wsurl = 'wss://adminapi.aaaaaaa.cn/ws/users/'
let token = app.globalData.token
let socketOpen = false
let socketMsgQueue = []
wx.connectSocket({
url: wsurl + token,
})
wx.onSocketOpen(function (res) {
console.log("onSocketOpen===", res);
socketOpen = true