123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- import mqtt from '../../common/mqtt.js'
- //import mqtt from 'mqtt/dist/mqtt.js'
- const options = {
- clientId: "mqtt_" + parseInt(Math.random() * 100 + 800, 10),
- keepalive: 20,
- connectTimeout: 30 * 1000,
- };
- // #ifdef H5
- //let url = 'wss://test.mosquitto.org'
- //let url = 'ws://60.205.190.38'
- let url = 'wss://mqtt.test.radio1964.com'
- // #endif
- // #ifdef MP-WEIXIN||APP-PLUS
- //let url = 'wxs://test.mosquitto.org'
- //let url = 'wx://60.205.190.38'
- let url = 'wxs://mqtt.test.radio1964.com'
- // #endif
- export default {
- namespaced: true,
- state:{
- mqttClient: undefined,
- msgList:[],
-
- },
- getters:{
- //mqtt连接状态
- connected:state =>{
- return state.mqttClient !== undefined && state.mqttClient.connected
- },
- //最新的一个消息
- newMessage:state =>{
- return msgList[msgList.length-1]
- }
- },
- mutations:{
- connect(state,getters) {
- 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}`);
- console.log(`offline callback`);
- })
-
- state.mqttClient.on('end', function() {
- //console.log(`end callback connected = ${state.mqttClient.connected}`);
- console.log(`end callback`);
- })
-
- state.mqttClient.on('close', function() {
- //console.log(`close callback connected = ${state.mqttClient.connected}`);
- console.log(`close callback`);
- })
- state.mqttClient.on('message',function(topic,message){
- console.log(`message = ${message.toString()}`);
- state.msgList.push({
- topic: topic.toString(),
- msg: message.toString(),
- });
- })
-
- } else {
- //console.log(`reconnect connected = ${state.mqttClient.connected}`)
- //console.log(`reconnect111 connected = ${getters.connected}`)
- if (state.mqttClient !== undefined && !state.mqttClient.connected) {
- console.log('reconnect')
- state.mqttClient.reconnect()
- //重连成功的回调
- state.mqttClient.on("reconnect", function() {
- state.isConnect = true;
- console.log("reconnect success!");
- });
- }
- }
-
-
- },
- disconnect(state) {
- console.log('disconnect')
- if (state.mqttClient !== undefined) {
- //mqtt.js在小程序运行有问题,调用end 不会回调close,而且state.mqttClient.connected一直是true
- state.mqttClient.end(false,() =>{
- console.log(`state.mqttClient.connected = ${state.mqttClient.connected}`);
- })
-
-
- //state.mqttClient = undefined
-
- }
- }
- },
- actions:{
- //发布消息
- publish({state,commit,getters},message){
- console.log('publish');
- console.log(message);
- return new Promise((resolve,reject) =>{
- if(getters.connected){
- //发布消息
- state.mqttClient.publish(message.topic,message.payload,(err) =>{
- if(err){
- console.log(err);
- reject(err)
- }else{
- resolve()
- }
- })
- }else{
- reject("mqttClient is not connected")
- }
- })
- },
- //订阅消息
- subscribe({state,commit,getters},topic){
- console.log(`subscribe topic = ${topic}`);
- return new Promise((resolve,reject) =>{
- if(getters.connected){
- //发布消息
- state.mqttClient.subscribe(topic,(err) =>{
- if(err){
- console.log(err);
- reject(err)
- }else{
- resolve()
- }
- })
- }else{
- reject("mqttClient is not connected")
- }
- })
- }
-
- }
-
- }
|