index-backoff.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. import mqtt from 'mqtt/dist/mqtt.js'
  4. Vue.use(Vuex); //vue的插件机制
  5. const options = {
  6. clientId: "mqtt_" + parseInt(Math.random() * 100 + 800, 10),
  7. port: 8081,
  8. keepalive: 20,
  9. clean: true,
  10. reconnectPeriod: 0,
  11. connectTimeout: 30 * 1000,
  12. protocolId: 'MQTT',
  13. protocolVersion: 4
  14. };
  15. // #ifdef H5
  16. let url = 'wss://test.mosquitto.org'
  17. // #endif
  18. // #ifdef MP-WEIXIN||APP-PLUS
  19. let url = 'wxs://test.mosquitto.org'
  20. // #endif
  21. //Vuex.Store 构造器选项
  22. const store = new Vuex.Store({
  23. state: { //存放状态
  24. mqttClient: undefined,
  25. },
  26. getters:{
  27. isConnect:state =>{
  28. return state.mqttClient !== undefined && state.mqttClient.connected
  29. }
  30. },
  31. mutations: {
  32. connect(state) {
  33. console.log('connect')
  34. if (state.mqttClient === undefined) {
  35. state.mqttClient = mqtt.connect(url, options)
  36. //连接成功回调
  37. state.mqttClient.on("connect", function() {
  38. console.log("connect success!");
  39. });
  40. //异常回调
  41. state.mqttClient.on("error", function(err) {
  42. console.log(err);
  43. });
  44. state.mqttClient.on('offline', function() {
  45. console.log(`offline callback connected = ${state.mqttClient.connected}`);
  46. })
  47. state.mqttClient.on('end', function() {
  48. console.log(`end callback connected = ${state.mqttClient.connected}`);
  49. })
  50. state.mqttClient.on('close', function() {
  51. console.log(`close callback connected = ${state.mqttClient.connected}`);
  52. //console.log(state.mqttClient.connected);
  53. })
  54. } else {
  55. if (state.isConnect === false) {
  56. state.mqttClient.reconnect()
  57. //重连成功的回调
  58. state.mqttClient.on("reconnect", function() {
  59. state.isConnect = true;
  60. console.log("reconnect success!");
  61. });
  62. }
  63. }
  64. },
  65. disconnect(state) {
  66. console.log('disconnect')
  67. if (state.mqttClient !== undefined) {
  68. state.mqttClient.end(true)
  69. //state.mqttClient = undefined
  70. console.log(state.mqttClient.connected);
  71. }
  72. }
  73. // stream.removeListener('complete', onfinish);
  74. // stream.removeListener('abort', onclose);
  75. // stream.removeListener('request', onrequest);
  76. // if (stream.req) stream.req.removeListener('finish', onfinish);
  77. // stream.removeListener('end', onlegacyfinish);
  78. // stream.removeListener('close', onlegacyfinish);
  79. // stream.removeListener('finish', onfinish);
  80. // stream.removeListener('exit', onexit);
  81. // stream.removeListener('end', onend);
  82. // stream.removeListener('error', onerror);
  83. // stream.removeListener('close', onclose);
  84. }
  85. })
  86. export default store