ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

微信小程序使用mqtt开发可以,真机不行

2026/9/16 13:21:50 拓冰建站 浏览量
微信小程序使用mqtt开发可以,真机不行

以下可以解决我的问题,请一步一步跟着做,有可能版本不一样就失败了

一、下载mqtt.js

前往蓝奏云 https://wwue.lanzouo.com/iQPdc1k50hpe
在这里插入图片描述
下载好后将.txt改为.js
然后放入项目里
在这里插入图片描述

二、连接mqtt

const mqtt = require('../../utils/mqtt.min');
let client;
// 连接选项
const options = {connectTimeout: 30000, // 默认 30 * 1000毫秒,收到 CONNACK 之前等待的时间,即连接超时时间。clientId: 'mqttjs_' + Math.random().toString(16).substring(2, 8), // 客户端 IDusername: 'l', // 连接用户名password: 'h0', // 连接密码clean: true, // 设置为 false 以在离线时接收 QoS 1 和 2 消息
};
client = mqtt.connect(`wxs://l.com/appletMqtt`, options);
// 链接异常处理
client.on('error', (error) => {console.log('连接失败:', error);
});
// 订阅
client.subscribe('/szdx/#',{qos: 1,},(error) => {if (!error) {console.log('订阅成功/szdx/device/in/#');} else {console.log('订阅失败/szdx/device/in/#');}}
);
// 接收消息处理
client.on('message', (e, a) => {if (e.search('/szdx') > -1) {let c = JSON.parse(String(a));}
});

三、nginx配置(因为小程序的bug)

emqx官网
需要有ssl证书

server {listen  443 ssl;        server_name xxx.emqx.io; 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 /appletMqtt {proxy_pass http://127.0.0.1:8083/mqtt;proxy_set_header Host $host;proxy_set_header Sec-WebSocket-Protocol mqtt;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";    }
}

四、最后就可以连上了(别问为什么,有用就行,哈哈)

注意,每一步都是有用的哦,如果你的不行,那么就原样复制一下