微信小程序mqtt真机调试connect失败

博主在尝试使用微信小程序实现MQTT通信时遇到真机调试无法连接服务器的问题。解决方法是通过Nginx进行代理配置。首先安装并配置Nginx,然后在nginx.conf中添加代理规则,指定SSL证书路径和监听端口。最后,重启Nginx服务,并在小程序中注释掉端口8084。此方法帮助解决了小程序真机调试的MQTT连接问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

        最近学习使用微信小程序实现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 www.xxx.com(此处填域名);
         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 http://www.xxx.com:8083;(填自己云服务器的域名)
               proxy_redirect off;
               proxy_set_header Host www.xxx.com: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

 

 

文章用于记录学习过程,如你遇到相同问题,希望有帮助!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值