uni-app微信小程序MQTT未知原因的坑
前言
MQTT.js npm包安装
1 | npm install mqtt --save |
版本 4.2.8
导入方式
1 | import mqtt from "mqtt" |
1 | // #ifdef H5 |
遇到的问题
uni-app 导入此包后微信小程序并不能正常连接服务器,但 H5 正常。
调试
翻看 EMQX 文档 时无意发现,微信小程序接入需要使用 TLS/443 端口,作如下修改
1
2
3// #ifdef MP-WEIXIN
this.hosts = 'wxs://' + this.basehost + '/mqtt'
//#endifNginx 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23server {
listen 443 ssl;
server_name xxx.com;
ssl_certificate cert/***.pem;
ssl_certificate_key cert/***.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# 添加反向代理
location /mqtt {
proxy_pass http://127.0.0.1:8083/mqtt;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# client_max_body_size 35m;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}结果:依旧无法连接
查看 MQTT.js github 的 Issues,4.2.6版本时有人提问过,但不知道提问者具体情况(连接地址问题?js问题?微信问题?)
结果:亲测失败
版本一直回退,直到 4.1.0,且导入方式修改
1
import mqtt from "mqtt/dist/mqtt.min.js"
结果:连接成功
总结
整个过程话费了大量时间,虽然最后成功连接,但个人知识有限,具体原因未知。可能从 4.2.0 版本更新时修改了某些内容,需要查看包更新内容进行研究。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 hioxy!