var MQTT_webClient; var locationIp = ''; var options = { // useSSL: true, //mqtt客户端的id,这里面应该还可以加上其他参数,具体看官方文档 clientId: 'webmqttjs_' + (Math.random() * 1000000).toString(), KeepAlive: 300, protocolId: 'MQTT', protocolVersion: 5, clean: true, reconnectPeriod: 1000, //两次重连间隔 connectTimeout: 30 * 1000, //等待收到connack确认包的时间 cleanSession: false, cleanStart: false, sessionExpiryInterval: 700, }; let https = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; let port = window.location.protocol === 'https:' ? '443' : '80'; console.log(https + `//119.136.30.122:${port}/mqtt`); console.log(window.location.hostname); MQTT_webClient = mqtt.connect(https + `//www.efficiencycn.com:${port}/mqtt`, options); // MQTT_webClient = mqtt.connect(https + '//' + ipadresss + ':8083/mqtt', options); MQTT_webClient.on('connect', function (connack) { if (connack) { if($.cookie('s2b2b_staff')==undefined) return var stff = decodeURIComponent(window.atob($.cookie('s2b2b_staff'))) var staff = JSON.parse(stff); MQTT_SubOne(staff.STAFF_ID)//订阅 console.log("服务器连接成功!"); } else if (connack.sessionPresent == true) { console.log("依赖存储会话!") } else { console.log("服务器异常" + err); } }) MQTT_webClient.on("close", function () { MQTT_webClient.reconnect(); console.log("服务器断开连接的回调"); }) //订阅一个主题 MQTT_SubOne = function (Topic) { if (Topic) { var ok = false; if (MQTT_webClient && MQTT_webClient.connected) { MQTT_webClient.subscribe(Topic, { qos: 2 }, function (err, granted) { if (!err) { console.log('订阅主题 ' + Topic + ' 成功') ok = true; } else { console.log('订阅主题 ' + Topic + ' 失败') ok = false; } }) } else { console.log('请先连接服务器') ok = false; } return ok; } }; sendMqttMsg = function (Msg, Topic) { let status = false; if (MQTT_webClient && MQTT_webClient.connected) { if (Topic == undefined) Topic = 'webBtnMqtt'; MQTT_webClient.publish(Topic, Msg, { qos: 2 }); status = true; } else { console.log('请先连接服务器') } return status; } MQTT_webClient.on("message", (topic, message) => { const mes_str = message.toString() let mes_json = JSON.parse(mes_str) console.log("来自主题:", topic) console.log("获取到消息:", mes_json); if (mes_json.MSG == '账户企业状态更新' && mes_json.Refresh_type == true) { showAlert('hint', '账户企业状态更新,请重新登录') setTimeout(() => { $.removeCookie('s2b2b_staff', { path: '/' }); window.location.href = "login.html"; }, 1000); } });