Node.js中mqtt.Client构造函数的使用方法求助(附尝试代码)
使用mqtt.js的
mqtt.Client()构造函数构建MQTT应用示例 我完全理解你想深入探索mqtt.js底层构造函数的需求——官方文档在这部分确实缺少直观的示例,我来给你提供完整的可运行代码,帮你理清mqtt.Client()的用法。
首先要明确:mqtt.connect()其实是mqtt.Client()的便捷封装,它会自动帮你完成实例化+连接的步骤;而直接用mqtt.Client()的话,你需要手动调用connect()方法来发起连接,这是两者最大的区别。
Client1 订阅端示例
var mqtt = require('mqtt') // 实例化Client对象:参数依次是broker地址、clientId、配置选项 const client1 = new mqtt.Client('tcp://localhost:1883', 'client1', { clean: false, // 开启会话持久化 // 可添加其他配置:比如 username: 'your-user', password: 'your-pass' }) // 监听连接成功事件 client1.on('connect', () => { console.log('client1 已连接') // 订阅主题,注意配置项里的QoS是小写的`qos` client1.subscribe('presence', { qos: 2 }) client1.subscribe('offline', { qos: 2 }) }) // 监听消息接收 client1.on('message', (topic, message) => { console.log(`client1 收到 [${topic}] 的消息:${message.toString()}`) }) // 监听错误,排查问题必备 client1.on('error', (err) => { console.error('client1 发生错误:', err) }) // 手动发起连接(这一步不能忘!) client1.connect()
Client2 发布端(带遗嘱消息)示例
var mqtt = require('mqtt') // 实例化带遗嘱配置的Client对象 const client2 = new mqtt.Client('tcp://localhost:1883', 'client2', { clean: false, will: { topic: 'offline', payload: 'off', qos: 2, retain: false // 可选,是否保留遗嘱消息 } }) client2.on('connect', () => { console.log('client2 已连接') // 发布消息,同样qos为小写 client2.publish('presence', '{message:hello,id:1}', { qos: 2 }) }) client2.on('error', (err) => { console.error('client2 发生错误:', err) }) // 手动发起连接 client2.connect()
关键注意点
- 协议地址:MQTT默认用TCP协议,所以地址要写
tcp://localhost:1883;如果用WebSocket连接,才用ws://localhost:8083/mqtt(不同broker的WebSocket路径可能有差异) - 配置项大小写:mqtt.js里的配置参数大多是小写,比如
qos而不是你之前写的QoS,大写会被忽略哦 - 手动连接:用
mqtt.Client()必须调用connect()方法,否则不会发起连接请求 - 错误监听:一定要加上
error事件监听,连接失败、权限问题等都能在这里看到原因
内容的提问来源于stack exchange,提问作者mahendra
相关产品推荐
相关产品推荐

