微信小程序连接MQTT服务器、阿里云微消息队列MQTT版

一、微信小程序连接EMQX Broker

1. 打开 https://unpkg.com/browse/mqtt@2.18.8/dist/mqtt.min.js 复制保存为js文件

2. 放到小程序文件夹utils中

3. 在项目的详情-本地设置中勾选“不校验合法域名……”

4. 编辑index.js:

const mqtt = require('../../utils/mqtt.min.js')

function connectMqtt() {
  const options = {
    connectTimeout: 30000,
    keepalive: 120,
    clientId: '12345678',
    username: 'xxx',
    password: 'xxx',
  }
  const client = mqtt.connect('wx://x.x.x.x:8083/mqtt', options)
 
  client.on('reconnect', (error) => {
    console.log('mqtt on reconnect:', error)
  })

  client.on('disconnect', (e) => {
    console.log('mqtt on disconnect')
  })
 
  client.on('error', (error) => {
    console.log('mqtt on error:', error)
  })

  client.on('connect', (e) => {
    console.log('mqtt on connect')
    client.subscribe('test', { qos: 0 }, function (err) {
        if (!err) {
          console.log("mqtt sub success")
        }
    })
  })

  client.on('message', function (topic, message, packet) {
    var payload = packet.payload.toString()
    console.log("mqtt on message:", payload)
    if (payload == 'server_cmd_send_test') {
      client.publish('test2', "send_test from minip");
    }
  })

  /* // payload为json格式
  client.on('message', function (topic, message, packet) {    
    console.log("mqtt on message: packet= " +  JSON.stringify(packet))
    // {"data":"yddasfdasf"}
    var payload = packet.payload // 必须这样过度一下
    var jsonPayload = JSON.parse(payload) // 再传入
    console.log("mqtt on message: jsonPayload= " +  JSON.stringify(jsonPayload))
    that.setData({
      motto: 'message:' + jsonPayload.data
    })
    if (payload == 'server_cmd_send_test') {
      client.publish('test2', "send_test from minip")
    }
  })
  */
}  

调用connectMqtt()

  onLoad: function () {

    connectMqtt()

    ......

5. 简单说明

5.1 连接成功后,订阅 test这个topic,用其他模拟终端发送test这个topic,内容为"server_cmd_send_test",通过log发现小程序已经收到,收到后判断是服务器发送的内容,则向test2这个topic发送一个消息,其他模拟终端订阅test2这个topic,可以看到收到了小程序的消息。

5.2 MQTT服务器是使用EMQX搭建的,这里要注意连接的地址 wx://x.x.x.x:8083/mqtt 中x.x.x.x为IP地址,另外一个就是要勾选“不校验合法域名……”这个。

 

二、微信小程序连接阿里云微消息队列MQTT版,只需要修改连接的参数即可:

1. client id (GID_XXX@@@YYY)

2. 用户名 (Signature|xxx|xxx)

3. 密码(根据阿里云规则计算,使用 hex_hmac_sha1.js 计算)

4. const client = mqtt.connect('wx://xxx.mqtt.aliyuncs.com', options)

5. 关于topic,主topic例如‘test’,子topic可以是‘test/test2’

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值