123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- 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
|