当前位置:首页 > 新闻动态 > 网站文章

微信小程序连接自搭建emq(emqx)的MQTT服务器

来源: 浏览:112 时间:2023-08-09

总体和连接阿里云物联网差不多,步骤如下:

  1. 去Github下载MQTT.js 库;一开始没注意,搞了很久,还把项目下下来自己编译,各种报错,最终也编译出来了,可后来发现其实有现成的单文件可用的,https://unpkg.com/mqtt/dist/mqtt.min.js,点击打开链接然后右键另存为即可(当前版本:2.18.8)
  2. 下载微信开发者工具,并新建一个项目
  3. 拷贝刚刚下载的mqtt.min.js到utils目录中去
  4. 勾选微信开发工具----【不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书】选项或者配置开发者后台socket 合法域名
  5. 修改index.js文件成如下:
// index.js
// 获取应用实例
const app = getApp()
var mqtt = require('../../utils/mqtt.min.js') //根据自己存放的路径修改
Page({
  data: {
    motto: 'Hello World',
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    canIUseGetUserProfile: false,
    canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName') // 如需尝试获取用户信息可改为false
  },
  // 事件处理函数
  bindViewTap() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  onLoad() {
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
    this.doConnect();
  },
  doConnect(){
  	//如果你服务器开了连接验证,这里的参数要自己加上username和password等
    const options = {
      keepalive: 60, //60s
      clean: true, //cleanSession不保持持久会话
      protocolVersion: 4 ,//MQTT v3.1.1
      clientId:Math.random().toString(36).substr(2)
    };
    console.log(options)
    let url = "wxs://broker.emqx.io:8084/mqtt";//这个地址是emq官方的公开免费地址,请换成自己服务器的地址
    console.log(url);
    const client = mqtt.connect(url,options)
    client.on('connect', function () {
      console.log('连接服务器成功')
    })
	//接收消息监听
    client.on('message', function (topic, message) {
      // message is Buffer
      let msg = message.toString();
      console.log('收到消息:'+msg);
     //关闭连接 client.end()
    })
  },
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        console.log(res)
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
  getUserInfo(e) {
    // 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
    console.log(e)
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  }
})

看到控制台输出

服务器连接已完成

地址 · ADDRESS

地址:建邺区新城科技园嘉陵江东街18号2层

邮箱:309474043@qq.Com

点击查看更多案例

联系 · CALL TEL

400-8793-956

售后专线:025-65016872

业务QQ:309474043    售后QQ:1850555641

©南京安优网络科技有限公司 版权所有   苏ICP备12071769号-4  网站地图