MQTT-设备连接文档(JavaScript)

学习 / 2023-05-09

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())
})