Skip to content

Commit e0457c6

Browse files
committed
fix(mqtt): error handling and expose mqtt data handler
1 parent 375d3a3 commit e0457c6

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

lib/Core.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const classes = {
44
Executor: require('./Services/executor'),
55
Hermes: require('./Services/hermes'),
66
Prometheus: require('./Services/prometheus'),
7+
Starbase: require('./Services/starbase'),
78
Streaming: require('./Services/streaming'),
89
Timekeeper: require('./Services/timekeeper')
910
};

lib/Services/starbase.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Starbase {
2121
* @param {string} payload[].unit
2222
*/
2323
publishJSON(clientId, clientSecret, hardwareId, payload) {
24-
const mqttClient = new MQTT({
24+
let mqttClient = new MQTT({
2525
username: clientId,
2626
password: clientSecret,
2727
clientId: hardwareId,
@@ -32,15 +32,30 @@ class Starbase {
3232
try {
3333
mqttClient.connect(async (err, client) => {
3434
if (err) {
35+
client.end();
3536
return reject(err);
3637
}
3738

3839
mqttClient.rawWrite('json', JSON.stringify(payload));
3940
await new Promise(resolve => setTimeout(resolve, 1000));
4041
client.end();
42+
mqttClient = null;
43+
return resolve();
44+
});
45+
46+
mqttClient.client.on('error', () => {
47+
mqttClient.client.end();
48+
mqttClient = null;
49+
return resolve();
50+
});
51+
mqttClient.client.on('disconnect', () => {
52+
mqttClient.client.end();
53+
mqttClient = null;
4154
return resolve();
4255
});
4356
} catch (error) {
57+
mqttClient.client.end();
58+
mqttClient = null;
4459
return resolve();
4560
}
4661
});

0 commit comments

Comments
 (0)