初始化
This commit is contained in:
68
frontend/packages/js/utils/mqttClient.js
Normal file
68
frontend/packages/js/utils/mqttClient.js
Normal file
@@ -0,0 +1,68 @@
|
||||
// mqttClient.js
|
||||
import mqtt from 'mqtt';
|
||||
|
||||
class MqttClient {
|
||||
constructor(brokerUrl, options) {
|
||||
this.brokerUrl = brokerUrl || '';
|
||||
this.clientId = options.clientId || "SW-VIEWS" + new Date().getTime();
|
||||
this.username = options.username || 'admin';
|
||||
this.password = options.password || '123456';
|
||||
this.client = null;
|
||||
}
|
||||
|
||||
// 连接 MQTT broker
|
||||
connect() {
|
||||
this.client = mqtt.connect(this.brokerUrl, {
|
||||
clientId: this.clientId,
|
||||
username: this.username,
|
||||
password: this.password
|
||||
});
|
||||
|
||||
this.client.on('connect', () => {
|
||||
console.log('mqtt 已经连接成功');
|
||||
});
|
||||
|
||||
this.client.on('reconnect', () => {
|
||||
console.log("mqtt reconnect");
|
||||
});
|
||||
|
||||
this.client.on('offline', () => {
|
||||
console.log("mqtt offline");
|
||||
});
|
||||
|
||||
this.client.on('error', (error) => {
|
||||
console.log("mqtt error");
|
||||
console.log(error);
|
||||
});
|
||||
}
|
||||
|
||||
// 订阅某个主题
|
||||
subscribe(topic, callback) {
|
||||
if (this.client) {
|
||||
this.client.subscribe(topic, (err) => {
|
||||
if (!err) {
|
||||
console.log(`mqtt 订阅主题 ${topic} 成功`);
|
||||
} else {
|
||||
console.log(`mqtt 订阅主题 ${topic} 失败`);
|
||||
}
|
||||
});
|
||||
|
||||
this.client.on('message', (topic, message) => {
|
||||
console.log(`mqtt 收到来自 ${topic} 的消息`);
|
||||
callback(topic, message);
|
||||
});
|
||||
} else {
|
||||
console.error('MQTT client is not connected');
|
||||
}
|
||||
}
|
||||
|
||||
// 断开连接
|
||||
disconnect() {
|
||||
if (this.client) {
|
||||
this.client.end();
|
||||
console.log('mqtt 连接已断开');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default MqttClient;
|
||||
Reference in New Issue
Block a user