先定义mqtt需要用到的参数
// mqtt连接参数 const mqttState = { url: 'http://xxx.xxx.xx:xxxx', clean: true, connectTimeout: 3000, reconnectPeriod: 0, client: "", arr: [] } 复制代码
- url: mqtt的请求路径
- clean:连接完成后,是否清理连接痕迹
这里有一个坑,注意要clear掉,不然在qos0的时候,会在emq上有很多痕迹的,日积月累,带来的负荷也不小
网络异常,图片无法展示
|
- connectTimeout: 连接等待时间 单位ms
- reconnectPeriod: 设置为0,则不会超时重连,主要看具体的业务需求
网络异常,图片无法展示
|
连接mqtt
mqttState.client = mqtt.connect(mqttState.url, { 'clean': mqttState.clean, 'connectTimeout': mqttState.connectTimeout, 'reconnectPeriod': mqttState.reconnectPeriod, 'clientId': `mqtt_${Math.random().toString(16).slice(3)}`, 'username': 'XXX', 'password': 'SSSS' }) mqttState.client.on('connect', (r, e) => { console.log('连接成功') }) 复制代码
- client_id最好使用随机数,不然会找到曾经的topic,就会串号了。
至此,基本mqtt就已经连接成功了。
一些具体的用法和事例
API
mqtt.connect()
mqtt.Client()
mqtt.Client#publish()
mqtt.Client#subscribe()
mqtt.Client#unsubscribe()
mqtt.Client#end()
mqtt.Client#removeOutgoingMessage()
mqtt.Client#reconnect()
mqtt.Client#handleMessage()
mqtt.Client#connected
mqtt.Client#reconnecting
mqtt.Client#getLastMessageId()
mqtt.Store()
mqtt.Store#put()
mqtt.Store#del()
mqtt.Store#createStream()
mqtt.Store#close()
由于公司跟iot硬件相关联系紧密,所以这种长短连接接触不少,很多内容涉及公司机密,不便透露,有问题可以找我沟通,我遇到过或者解决过的,都会倾囊相助的。