目前开发的一个物联网项目,需要用小程序给物联网设备发消息
综合考虑下,决定使用MQTT协议进行开发
用npm安装
npm install mqtt --save
小程序使用Demo
// 在小程序中使用MQTT需要先安装必要的polyfill import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'; import 'esbuild-plugin-polyfill-node/polyfills/navigator'; const mqtt = require("mqtt"); // 连接MQTT代理服务器 const client = mqtt.connect("wxs://test.mosquitto.org", { timerVariant: 'native' // 使用小程序原生定时器 }); // 监听连接事件 client.on('connect', function () { console.log('已连接到MQTT服务器'); // 订阅主题 client.subscribe('presence', function (err) { if (!err) { // 发布消息 client.publish('presence', 'Hello mqtt from 微信小程序'); } }); }); // 接收消息 client.on('message', function (topic, message) { console.log('收到消息:', message.toString()); });
配置说明
必要的Polyfill:
abortcontroller-polyfill:小程序环境缺少AbortController API
navigator的polyfill:MQTT.js在某些情况下会使用navigator对象
协议说明:
小程序中使用wxs://而非标准的wss://
这是小程序要求的WebSocket安全协议格式
timerVariant配置:
设置为’native’让MQTT.js使用小程序原生定时器
避免使用JavaScript定时器可能带来的问题
注意事项:
需要在小程序管理后台配置MQTT服务器域名
真机调试时需要开启调试模式(忽略域名校验)