MQTT-设备连接文档(JavaScript)
物联网异构性非常大,很难找到一个有广泛性的开发语言和平台。JavaScript是一门表达性很强而且简单易学的语言,所以用来表示DebiceSDK的设计思路。
项目完整连接代码 :https://github.com/emqx/MQTT-Client-Examples/tree/master/mqtt-client-Node.js
前提
Node.js v14.14.0及以上的版本
# 新建项目
npm init -y
# 安装依赖
npm install mqtt --save
const host = '192.168.50.181' //连接ip地址
const port = '1883' //普通的 TCP 连接端口为1883,基于 TLS/SSL 的安全连接端口为 8883
const clientId = `mqtt_${Math.random().toString(16).slice(3)}`//客户端ID待定
const connectUrl = `tcp://${host}:${port}`
const client = mqtt.connect(connectUrl, {
clientId,
clean: true,//为 false 时表示创建一个持久会话,在客户端断开连接时,会话仍然保持并保存离线消息,直到会话超时注销。为 true 时表示创建一个新的临时会话,在客户端断开时,会话自动销毁。
connectTimeout: 4000,
username: 'emqx', //认证的用户名
password: 'public',//认证的密码
reconnectPeriod: 1000,//重连时间,默认 5000 毫秒
})
const topic = '/nodejs/mqtt'// 主题
client.on('connect', () => {
console.log('Connected')
client.subscribe([topic], () => { //订阅主题
console.log(`Subscribe to topic '${topic}'`)
})
})
const topic2 = '/nodejs2/mqtt'
client.on('connect', () => {
console.log('Connected')
client.subscribe([topic2], () => {
console.log(`Subscribe to topic2 '${topic2}'`)
})
})
client.on('message', (topic, payload) => {
console.log('topic:', topic, payload.toString())
})
client.on('message', (topic2, payload) => {
console.log('topic2:', topic2, payload.toString())
})