问题
最近学习使用微信小程序实现mqtt通信,在真机调试时遇到一个bug卡住很久:在小程序开发工具中能正常连接服务器、订阅、收发消息,但真机调试和预览不能连接到mqtt服务器。
解决问题前的环境
1. 腾讯云服务器 ubuntu18.04
2. 在服务器上配置好了emqx
3. 部署了ssl证书(免费版)
4. 微信公众平台【开发管理】配置了服务器域名。
如何解决
使用nginx代理。
注意:我是用wget命令下载nginx,安装配置很麻烦。建议大家参考b站up主半颗心脏i的视频:【全网首发】从搭建私有服务器到esp8266代码,教你如何利用微信小程序控制esp8266。(半颗心脏出品)_哔哩哔哩_bilibili
用宝塔配置,讲的很详细。不会配置nginx建议点上面。
1.安装nginx
参考这篇文章:linux系统ubuntu安装nginx详解 - 走看看
2.打开nginx/conf/nginx.conf
http{
.....;
下面代码修改后加入此处;
}
server{listen 80;listen 443 ssl;server_name (此处填域名);ssl_certificate /etc/emqx/certs/mqtt.pem(ssl证书里的.pem文件路径,我修改了文件名);ssl_certificate_key /etc/emqx/certs/mqtt.key;(ssl证书里的.key路径);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 /mqtt{proxy_pass :8083;(填自己云服务器的域名)proxy_redirect off;proxy_set_header Host :8083;(填自己云服务器的域名)proxy_set_header Sec-WebSocket-Protocol mqtt;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}}
3. 重启nginx
进入nginx可执行目录sbin下,输入命令./nginx -s reload
参考Nginx的启动、停止与重启 - codingcloud - 博客园
4. 注释微信小程序里的port:8084
文章用于记录学习过程,如你遇到相同问题,希望有帮助!
如果觉得《微信小程序mqtt真机调试connect失败》对你有帮助,请点赞、收藏,并留下你的观点哦!