微信小程序mqtt實現(xiàn)

下載mqtt到項目
方式一:
npm 在我的項目出現(xiàn)了奇奇怪怪的問題。所以我選擇方式二
方式二:
直接下載mqtt.js
地址:https://cdnjs.com/libraries/mqtt

image.png

注意事項:若mqtt的連接的地址沒有在小程序備案的話需要開啟:不校驗。。。。
image.png

看是否備案的位置
image.png

代碼實現(xiàn):
//mqttUtils

import { $GLOBAL } from '../../app';
import mqtt from './mqtt';

let client = null;
const initMqtt = function (that) {
  let url = $GLOBAL.MQTT_URL;//url:類似于:'wss://mqtt.....
  let date = new Date().getTime();
  client = mqtt.connect(url, {
    protocol: 'wxs',
    clientId: 'wqs' + date,
    username: $GLOBAL.USERNAME,//賬號
    password: $GLOBAL.PASSWORD,//密碼
  });
  that.globalData.client = client;//為全局client賦值:在app.js
  client.on('connect', () => {
    console.log('連接成功');
  });
  client.on('message', (topic, payload) => {
    //在這里做處理:收到新消息走這個方法
    console.log('更新', topic + ':' + payload);
  });
  client.on('disconnect', () => {
    console.log('代理斷開連接');
  });
  client.on('close', () => {
    console.log('斷開連接');
  });
  client.on('offline', () => {
    console.log('脫機');
  });
  client.on('error', () => {
    console.log('無法連接');
    initMqtt();
  });
};
//添加訂閱 ${$GLOBAL.MQTT_TOPIC}/user/${userId}訂閱的主題地址:問后端,是直接返回還是拼接
const addSubscription = function (userId) {
    client.subscribe(`${$GLOBAL.MQTT_TOPIC}/user/${userId}`, err => {
      if (!err) {
        console.log('訂閱成功');
      } else {
        console.log('訂閱失敗');
      }
    });
  },
  mqttFun = {
    initMqtt,
    addSubscription,
  };

module.exports = mqttFun;

使用:
app.js
1、添加全局client


image.png

2、在onLaunch注冊mqtt

   // 全局注冊mqtt:并防止重復注冊
   if (!this.globalData.client) {
     mqttUtil.initMqtt(this);
   }

在頁面你想訂閱的地方添加訂閱方法

  mqttUtil.addSubscription(info.userId);

//其他的問題
自己測試能不能收到消息

client.publish('訂閱的地址', '發(fā)送內容')
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容