import Vue from 'vue' import Vuex from 'vuex' import mqtt from 'mqtt/dist/mqtt.js' Vue.use(Vuex); //vue的插件机制 const options = { clientId: "mqtt_" + parseInt(Math.random() * 100 + 800, 10), port: 8081, keepalive: 20, clean: true, reconnectPeriod: 0, connectTimeout: 30 * 1000, protocolId: 'MQTT', protocolVersion: 4 }; // #ifdef H5 let url = 'wss://test.mosquitto.org' // #endif // #ifdef MP-WEIXIN||APP-PLUS let url = 'wxs://test.mosquitto.org' // #endif //Vuex.Store 构造器选项 const store = new Vuex.Store({ state: { //存放状态 mqttClient: undefined, }, getters:{ isConnect:state =>{ return state.mqttClient !== undefined && state.mqttClient.connected } }, mutations: { connect(state) { console.log('connect') if (state.mqttClient === undefined) { state.mqttClient = mqtt.connect(url, options) //连接成功回调 state.mqttClient.on("connect", function() { console.log("connect success!"); }); //异常回调 state.mqttClient.on("error", function(err) { console.log(err); }); state.mqttClient.on('offline', function() { console.log(`offline callback connected = ${state.mqttClient.connected}`); }) state.mqttClient.on('end', function() { console.log(`end callback connected = ${state.mqttClient.connected}`); }) state.mqttClient.on('close', function() { console.log(`close callback connected = ${state.mqttClient.connected}`); //console.log(state.mqttClient.connected); }) } else { if (state.isConnect === false) { state.mqttClient.reconnect() //重连成功的回调 state.mqttClient.on("reconnect", function() { state.isConnect = true; console.log("reconnect success!"); }); } } }, disconnect(state) { console.log('disconnect') if (state.mqttClient !== undefined) { state.mqttClient.end(true) //state.mqttClient = undefined console.log(state.mqttClient.connected); } } // stream.removeListener('complete', onfinish); // stream.removeListener('abort', onclose); // stream.removeListener('request', onrequest); // if (stream.req) stream.req.removeListener('finish', onfinish); // stream.removeListener('end', onlegacyfinish); // stream.removeListener('close', onlegacyfinish); // stream.removeListener('finish', onfinish); // stream.removeListener('exit', onexit); // stream.removeListener('end', onend); // stream.removeListener('error', onerror); // stream.removeListener('close', onclose); } }) export default store