前方:
微信小程序界面之类的,如果功能不是很复杂的话,开发起来其实还是挺简单的,但是比较坑的是他的安全机制。首先你需要有自己的域名,你的域名需要备案,备案的话一般要20天左右,而且你自己的服务器要支持https。所以,我要腾讯云买了域名,买了服务器,备案等等搞了20多天,钱倒是花了不少,这还只是第一坑。

小程序MQTT客户端:
小程序的MQTT客户端支持使用的是paho-mqtt.js,可以在github上面找到源码,怎么使用的话可以查看源码里面包含的例子,总的来说并不是很复杂。但是弄好之后,界面如下:

用过MQTT的知道可以选择端口和服务器地址,还有用户名密码认证是可选的。所以我填好之后。连接错误如下:


按照提示说,我的域名没有在合法域名列表中,但是我确定是已经配置好了的,而且小程序项目也已经刷新了,还是会提示这个错误。

解决方法:
因为小程序是使用wss进行通信,默认使用的是443端口,不用自己指定端口,可以使用下面图片中最下方的方式进行访问。


用过EMQ的应该知道,tcp端口为1883,ssl端口为8883,ws端口为8083,wss端口为8084,但是现在不能使用这些端口进行访问。如下所示:

EMQ服务器搭建:

EMQ服务的搭建其实并不复杂,可以参照官方文档进行安装,我使用的是Linux的通用版本,这里要注意的是SSL证书的设置,我的一个问题有提到,有兴趣的可以看看。

要解决上面的问题,这里使用Nginx进行反向代理。Nginx的安装也不是很复杂,但是使用源码安装的话,安装之前要安装好依赖库,可以参照: ubuntu16.04 nginx安装。另外,还要添加一个 more_clear_headers 模块,可以参照:openresty/headers-more-nginx-module

接下来是Nginx的配置,主要配置SSL和反向代理,进行如下配置:

server {listen 443;server_name www.domain.com; #填写绑定证书的域名ssl on;ssl_certificate certs/1_www.domain.com_bundle.crt;ssl_certificate_key certs/2_www.domain.com.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置ssl_prefer_server_ciphers on;location / {root   html; #站点目录index  index.html index.htm;}location = /mqtt {proxy_pass http://www.domain.com:8083;proxy_redirect off;proxy_set_header Host www.domain.com:8083;proxy_set_header Sec-WebSocket-Protocol mqtt;more_clear_headers Sec-WebSocket-Protocol;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}
}

上面域名和证书之类的替换为你自己的域名和证书,注意证书的路径。另外,新测8084端口(wss)和8083端(ws)都可以,不过上面用8084端口时要用https。现在已经可以完成小程序MQTT客户端与EMQ服务器的通信了。
感谢wxapp作者的交流指导。

参考:
https://github.com/tennessine...
http://emqtt.com/docs/v2/inst...
http://www.cnblogs.com/badboy...
http://www.cnblogs.com/badboy...
https://github.com/openresty/...
https://zhuanlan.zhihu.com/p/...

微信小程序MQTT客户端的坑相关推荐

  1. 【微信小程序控制硬件②】 开始微信小程序之旅,导入小程序Mqtt客户端源码,实现简单的验证和通讯于服务器.(附带源码)

    文章目录 一.前言: 二.注册微信小程序: 三.本博文连接和微信物联有何区别: 四.微信小程序`MQTT`客户端源码导入注意事项: 五.下载: 微信物联网生态主要分在微信硬件开发平台与腾讯物联开发平台 ...

  2. 【微信小程序控制硬件⑦ 进阶篇】动起来做一个微信小程序Mqtt协议控制智能硬件的框架,为心里全栈工程师梦想浇水。

    文章目录 一.前言: 二.涉及的技术点: 三.框架的运行原理: 四.框架代码流程: 4.1 主线程: 4.2 获取设备列表显示设备,以及订阅在线的设备: 4.3 点击某设备如何实现携带此设备信息到控制 ...

  3. 【微信小程序控制硬件 第13篇】安信可B站直播学习总结,微信小程序MQTT远程控制ESP8266 NodeMCU,谈谈微信生态那些事;

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  4. 微信小程序uni.getImageInfo踩坑大计划

    B站https://www.bilibili.com/read/cv6317437 如果你在使用getImageInfo的时候真机调试没问题,上传生成体验版的时候或者是线上版本没反应,主要原因是网络图 ...

  5. 开发微信小程序 中遇到的坑 及解决方法

    开发微信小程序 中遇到的坑 及解决方法 参考文章: (1)开发微信小程序 中遇到的坑 及解决方法 (2)https://www.cnblogs.com/feiye512/p/6070052.html ...

  6. 微信小程序wx.compressImage的坑

    微信小程序wx.compressImage的坑 如何使用 第二个坑 如何使用 微信小程序api官网写的是这个 wx.compressImage({ src: '', // 图片路径 quality: ...

  7. 微信小程序MQTT模拟器 阿里云物联网平台测试

    陈拓 chentuo@ms.xab.ac.cn 2019.09.27/2020.01.20 原文参考:微信小程序-MQTT模拟器 https://www.yuque.com/cloud-dev/iot ...

  8. 会员卡券领取 小程序_微信小程序会员卡开发跳坑

    微信小程序会员卡开发跳坑 最近看好多人问,小程序里面怎么显示会员卡,然客户领取后,去对应店铺核销. 本身以为会很简单,最后费了好大心思才找到对应文档. 会员卡是见过微信最差的文档了,没说明参数从哪里获 ...

  9. 微信小程序开发的那些坑,你踩过吗?

    微信小程序开发的那些坑,你踩过吗? textarea组件value不显示 textarea组件默认值绑定data数据真机不显示问题 |?链接 使用.switchTab跳转到tabbar页传递参数问题 ...

  10. (开源)微信小程序+mqtt,esp8266温湿度读取

    第一.原理讲解 esp8266 通过mqtt发布消息,微信小程序通过mqtt 订阅消息,小程序订阅后,就可以实时收到esp8266 传输来的消息. 个人可免费注册五个微信小程序账号,在微信小程序官网注 ...

最新文章

  1. Learn OpenGL (八):颜色
  2. Uva 507 - Jill Rides Again(最大子数组求和问题)
  3. lazyload.js详解
  4. java script 技巧_java script 技巧
  5. JAVA设计模式初探之适配器模式(转)
  6. eclipse没有advanced按钮_Eclipse快捷键 + 自动提示不显示问题
  7. jdk String类源码解析
  8. html判断隐藏显示,javascript如何判断元素是否可见?
  9. 车牌识别用php算法,车牌识别算法实现及其代码实现之一:车牌区域检测
  10. 【T3】运行时错误3709
  11. Python获取图片保存对应的文件夹
  12. C++网站开发MVC框架TreeFrog Framework教程——7.ERB模板
  13. sqlserver把某个字段多行逗号隔开
  14. 新版Android Studio Logcat view使用简明教程
  15. CSDN VIP年卡大放送!中国大数据技术大会超值福利,等你来拿!
  16. python短信验证码登录_Python手机验证码登录
  17. 智能家居带动路由器换代潮 中高端市场大门已敞开
  18. VMware的更新怎么这么恶心
  19. 哪些情况可以判定需要进行仪器校准?
  20. gt-itm模型生成拓扑结构

热门文章

  1. 详解 Flink 指标、监控与告警
  2. 我们公司使用了 6 年的分布式锁,很是牛逼啊!
  3. win7重启mysql服务器_Win7系统下怎么重启iis服务?
  4. 服务器云端设置怎么退出_换新手机时,3个地方要及时清除退出,别让旧手机成隐私“内鬼”...
  5. 八十年代的计算机游戏,儿时小霸王的记忆 八十年代最伟大的二十款游戏
  6. linux虚拟主机用织梦,织梦程序用什么虚拟主机很服务器好
  7. matlab设置ylabel,关于ylabel设置的问题
  8. 区块链与java的应用开发_用 Java 开发一个区块链
  9. android 本地广播原理,本地广播原理
  10. mysql8.x非注册使用[{绿色使用]