在微信小程序中使用mqtt服务的方法


Posted in Javascript onDecember 13, 2019

因为需求的关系,需要在小程序中使用mqtt来进行tcp的长连接,实时监听设备的返回状态。

js中连接mqtt服务器是通过websocket来实现的,我在网上找了2个库,一个是eclipse开发的paho-mqtt。

项目地址:https://github.com/eclipse/paho.mqtt.javascript

一个是个人开发的mqttjs,项目地址:https://github.com/mqttjs/MQTT.js

比较了下,mqqtt.js比较灵活对小程序也有很好的支持,所以采用了这个库来做连接。

于是看了下他自己的介绍,直接拿过来试用了下。因为是直接用在小程序中不需要那么复杂,它提供了静态的cdn下载,

直接打开链接复制到工程中直接用就可以,不用更改。cdn地址:https://unpkg.com/mqtt@2.18.8/dist/mqtt.js min版:https://unpkg.com/mqtt@2.18.8/dist/mqtt.min.js;

使用起来也很简单,直接贴代码

function connectMq(){
 
  // 连接选项
  const options = {
   connectTimeout: 4000, // 超时时间
   // 认证信息 按自己需求填写
   clientId: '',
   username: 'xxx',
   password: 'xxx',
  }
  let phone = app.globalData.myInfo.TelPhone;
  const client = mqtt.connect('wx://xx.xxxxxxx', options)
 
  client.on('reconnect', (error) => {
   console.log('正在重连:', error)
  })
 
  client.on('error', (error) => {
   console.log('连接失败:', error)
  })
 
  client.on('connect', (e) => {
   console.log('成功连接服务器111')
    //订阅一个主题
   client.subscribe('phone_' + phone, { qos: 0 }, function (err) {
    if (!err) {
     //client.publish('123', 'Hello mqtt')
     console.log("订阅成功")
    }
 
   })
  })
  //监听mq的返回
  client.on('message', function (topic, message, packet) {
   // message is Buffer
   console.log("packet", packet.payload.toString())
   client.end()
  })
}

这里着重要注意的连接地址的写法

//mqtt.connect('wx://xxxxxxxxxx', options);
//wx://  xx.xx.xxxxxxx
//协议版本 链接地址
//微信小程序这个版本 作者自己封装了一层 wx表示普通的ws协议连接 wxs表示加密之后的wss协议连接。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript定义函数的方法
Dec 06 Javascript
JavaScript 基础篇(一)
Mar 30 Javascript
javascript单引号和双引号的区别和处理
May 14 Javascript
JavaScript监听和禁用浏览器回车事件实例
Jan 31 Javascript
JS获取文件大小方法小结
Dec 08 Javascript
AngularJS中处理多个promise的方式
Feb 02 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
Jan 05 Javascript
详解vue父子模版嵌套案例
Mar 04 Javascript
使用Angular CLI生成路由的方法
Mar 24 Javascript
vue 项目接口管理的实现
Jan 17 Javascript
JS实现选项卡效果的代码实例
May 20 Javascript
vue.js封装switch开关组件的操作
Oct 26 Javascript
微信小程序之左右布局的实现代码
Dec 13 #Javascript
vue实现输入一位数字转汉字功能
Dec 13 #Javascript
小程序登录之支付宝授权的实现示例
Dec 13 #Javascript
小程序使用wxs解决wxml保留2位小数问题
Dec 13 #Javascript
微信小程序点击保存图片到本机功能
Dec 13 #Javascript
微信小程序实现轨迹回放的示例代码
Dec 13 #Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
Dec 13 #Javascript
You might like
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
js动态给table添加/删除tr的方法
2013/08/02 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
纯JS实现轮播图
2017/02/22 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
jQuery+ajax实现文件上传功能
2020/12/22 jQuery
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
wxPython中listbox用法实例详解
2015/06/01 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
提高python代码运行效率的一些建议
2020/09/29 Python
Python中的面向接口编程示例详解
2021/01/17 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
CSS3 实现的缩略图悬停效果
2020/12/09 HTML / CSS
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
美国知名生活购物网站:Goop
2017/11/03 全球购物
大型车展策划方案
2014/02/01 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
安全责任书范文
2014/08/25 职场文书
董事会决议范本
2015/07/01 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL