前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >91-STM32+ESP8266+AIR202/302基本控制篇--功能扩展-关于网络上mqtt.js 和 mqtt.min.js 微信小程序包的使用

91-STM32+ESP8266+AIR202/302基本控制篇--功能扩展-关于网络上mqtt.js 和 mqtt.min.js 微信小程序包的使用

作者头像
杨奉武
发布2020-10-29 15:11:07
1.8K0
发布2020-10-29 15:11:07
举报
文章被收录于专栏:知识分享

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

说明

对于使用nginx的用户而言,在配置反向代理的时候

代码语言:javascript
复制
location /mqtt {
proxy_set_header Host $http_host;
proxy_pass http://localhost:8083; #服务端部署的服务访问路径
proxy_http_version 1.1;

proxy_set_header Sec-WebSocket-Protocol mqtt;

more_clear_headers Sec-WebSocket-Protocol;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s; # 默认是60秒,可设置
}

在设置下面这两句的时候会报错有可能会报错

proxy_set_header Sec-WebSocket-Protocol mqtt;

more_clear_headers Sec-WebSocket-Protocol;

这是因为缺少nginx的一个插件

用户可以去安装这个插件,或者使用网络中的另一个mqtt包

mqtt.js 和 mqtt.min.js

用这两个包就不需要设置以下两句

proxy_set_header Sec-WebSocket-Protocol mqtt;

more_clear_headers Sec-WebSocket-Protocol;

MQTT.js下载地址

https://github.com/mqttjs/MQTT.js

CDN地址:(复制整个文件,保存为XXXX.js文件即可)

https://unpkg.com/mqtt@3.0.0/dist/mqtt.min.js

https://unpkg.com/mqtt@3.0.0/dist/mqtt.js

使用

1.把CDN上的代码复制出来

mqtt.js 是比较完整的包

mqtt.min.js  是裁剪后的包.

2.基本的使用可以看资料的API使用说明

3.为了和先前使用的做到通用,我和以前一样做了封装

mqtt.min.js是在 CDN链接上下载的包

mqtt.js是我在mqtt.min.js包的基础上封装了一层.

移植使用(测试地址 wxs://mnifdv.cn/mqtt)

1.把这两个文件放到自己的小程序的utils文件夹

2.根据自己的MQTT服务器更改以下信息

3.在软件启动的地方调用一次连接函数

注:只要写上连接,内部自动断线重连

var MQTT = require("./utils/mqtt.js");

MQTT.ConnectMqtt();//链接MQTT

4.编译下工程,成功连接MQTT,打印如下

5.注意反向代理这样设置

代码语言:javascript
复制
location /mqtt {
proxy_set_header Host $http_host;
proxy_pass http://localhost:8083; #服务端部署的服务访问路径
proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s; # 默认是60秒,可设置
}

6.测试断线重连

7.订阅一个主题

代码语言:javascript
复制
MQTT.subscribeTopic(
"1111", //订阅1111
0,//消息等级
function () {
console.log("订阅成功");
}, function () {
console.log("订阅失败");
}
);//订阅主题

建议

代码语言:javascript
复制
var MQTT = require("../../utils/mqtt.js");
var TimeNumber;//循环订阅设备主题定时器

    //订阅设备发布的主题
    try { clearInterval(TimeNumber); } catch (e) { }
    TimeNumber = setInterval(function()
    {

      MQTT.subscribeTopic(
        "1111", //订阅1111
        0,//消息等级
        function () {
          console.log("订阅成功");
          clearInterval(TimeNumber);//订阅成功清除定时
        }, function () {
          console.log("订阅失败");
        }
      );//订阅主题

    }, 1000, "null");//启动定时器,循环订阅主题,直至订阅成功

8.订阅多个主题

MQTT.subscribeTopicMultiple({ 'topic': { qos: 0 }, 'topic2': { qos: 1 } }, Successfunction , Failurefunction );

订阅的主题为一个对象 { 'topic': { qos: 0 }, 'topic2': { qos: 1 } }

代码语言:javascript
复制
MQTT.subscribeTopicMultiple(
        {'topic': { qos: 0 }, 'topic2': { qos: 1 } }, 
        function (){
          console.log("订阅成功");
        }, function () {
          console.log("订阅失败");
        });

9.取消订阅

取消订阅 "topic1"

XXXX.unSubscribeTopic('topic1', function () {

});

取消订阅 "topic1"  "topic2"

XXXX.unSubscribeTopic(['topic1', 'topic2'], function () {

});

10.发布消息

11.接收消息

12.监听MQTT连接状态

断线

代码语言:javascript
复制
MQTT.SetonConnectionLostCallBack(function (arg) {
      //offline / reconnect / disconnect / close / error
      if (arg == 'offline') console.log('断线');
      else if (arg == 'reconnect') console.log('尝试重连');
      
    });//软件掉线

上线

注意事项

当前源码暂无16进制处理,请静待!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • MQTT.js下载地址
  • 使用
  • 移植使用(测试地址 wxs://mnifdv.cn/mqtt)
  • 注意事项
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档