一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情。
先定义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#connectedmqtt.Client#reconnectingmqtt.Client#getLastMessageId()mqtt.Store()mqtt.Store#put()mqtt.Store#del()mqtt.Store#createStream()mqtt.Store#close()
由于公司跟iot硬件相关联系紧密,所以这种长短连接接触不少,很多内容涉及公司机密,不便透露,有问题可以找我沟通,我遇到过或者解决过的,都会倾囊相助的。
最后
公众号:
小何成长,佛系更文,都是自己曾经踩过的坑或者是学到的东西有兴趣的小伙伴欢迎关注我哦,我是:
何小玍。大家一起进步鸭