前言
最近项目中用到了kafka接口,后来又改用了mqtt接口,今天就来记录一下js如何连接mqtt。
主要是使用了mqtt.js
这个库,使用 WebSocket 连接。
mqtt
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,构建于TCP/IP协议上。
mqtt的安装
安装: npm install mqtt -g
;
引用:import mqtt from 'mqtt';
mqtt的使用
首先,创建一个客户端,并传入一些连接设置;
// 连接设置
var options = {
clean: true, // 保留会话
connectTimeout: 4000, // 超时时间
reconnectPeriod: 1000, // 重连时间间隔
// 认证信息
clientId,
username: '',
password: '',
}
var client = mqtt.connect("ws://10.2.xx.xx:8083/mqtt", options);
然后,建立连接,订阅主题;
//建立连接
client.on('connect', function () {
//订阅主题client.subscribe(topic, '订阅主题');
client.subscribe(topic);
})
接收消息;
// 接收消息
client.on('message', (topic, message) => {
console.log(message.toString())
})
最后,发送信息给主题;
// 发送信息给 topic(主题) client.publish(topic, '这是给topic发送的信息');
client.publish(topic, '这是给topic发送的信息');
mqtt请求
mqtt请求在浏览器中其实就是 websocket请求。
先借用http建立连接,然后协议升级成ws协议进行通信。
示例代码
var client = mqtt.connect("ws://10.2.xx.xx:8083/mqtt", {
clientId: 'mqttjs_' + Math.random().toString(16).substr(2, 8),
client: true,
connectTimeout: 4000,
username: 'admin',
password: 'public',
keepalive: 60
})
//建立连接
client.on('connect', function () {
//订阅主题
client.subscribe('MQTT-EXP-APPLY-TOPIC');
})
client.on('error', function (err) {
console.log('连接错误:', err)
client.end()
})
client.on('reconnect', (error) => {
console.log('正在重连:', error)
})
// 监听接收消息事件
client.on('message', (topic, message) => {
console.log(message.toString())
})
// 发送信息给 topic
client.publish('MQTT-EXP-APPLY-TOPIC', '这是给topic发送的信息');
结语
本文到此结束,谢谢大家的观看!
如有问题,欢迎各位指正!