mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Merge pull request #3966 from Steve-Mcl/fix-mqtt-single-subscription
fix single subscription mqtt node status
This commit is contained in:
commit
4bb2b91ee6
@ -366,6 +366,16 @@ module.exports = function(RED) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateStatus(node, allNodes) {
|
||||||
|
let setStatus = setStatusDisconnected
|
||||||
|
if(node.connecting) {
|
||||||
|
setStatus = setStatusConnecting
|
||||||
|
} else if(node.connected) {
|
||||||
|
setStatus = setStatusConnected
|
||||||
|
}
|
||||||
|
setStatus(node, allNodes)
|
||||||
|
}
|
||||||
|
|
||||||
function setStatusDisconnected(node, allNodes) {
|
function setStatusDisconnected(node, allNodes) {
|
||||||
if(allNodes) {
|
if(allNodes) {
|
||||||
for (var id in node.users) {
|
for (var id in node.users) {
|
||||||
@ -697,13 +707,17 @@ module.exports = function(RED) {
|
|||||||
if (Object.keys(node.users).length === 1) {
|
if (Object.keys(node.users).length === 1) {
|
||||||
if(node.autoConnect) {
|
if(node.autoConnect) {
|
||||||
node.connect();
|
node.connect();
|
||||||
|
//update nodes status
|
||||||
|
setTimeout(function() {
|
||||||
|
updateStatus(node, true)
|
||||||
|
}, 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
node.deregister = function(mqttNode,done) {
|
node.deregister = function(mqttNode, done, autoDisconnect) {
|
||||||
delete node.users[mqttNode.id];
|
delete node.users[mqttNode.id];
|
||||||
if (!node.closing && node.connected && Object.keys(node.users).length === 0) {
|
if (autoDisconnect && !node.closing && node.connected && Object.keys(node.users).length === 0) {
|
||||||
node.disconnect();
|
node.disconnect();
|
||||||
}
|
}
|
||||||
done();
|
done();
|
||||||
@ -1220,7 +1234,7 @@ module.exports = function(RED) {
|
|||||||
} else {
|
} else {
|
||||||
node.brokerConn.unsubscribe(node.topic,node.id, removed);
|
node.brokerConn.unsubscribe(node.topic,node.id, removed);
|
||||||
}
|
}
|
||||||
node.brokerConn.deregister(node, done);
|
node.brokerConn.deregister(node, done, removed);
|
||||||
node.brokerConn = null;
|
node.brokerConn = null;
|
||||||
} else {
|
} else {
|
||||||
done();
|
done();
|
||||||
@ -1283,9 +1297,9 @@ module.exports = function(RED) {
|
|||||||
node.status({fill:"green",shape:"dot",text:"node-red:common.status.connected"});
|
node.status({fill:"green",shape:"dot",text:"node-red:common.status.connected"});
|
||||||
}
|
}
|
||||||
node.brokerConn.register(node);
|
node.brokerConn.register(node);
|
||||||
node.on('close', function(done) {
|
node.on('close', function(removed, done) {
|
||||||
if (node.brokerConn) {
|
if (node.brokerConn) {
|
||||||
node.brokerConn.deregister(node,done);
|
node.brokerConn.deregister(node, done, removed)
|
||||||
node.brokerConn = null;
|
node.brokerConn = null;
|
||||||
} else {
|
} else {
|
||||||
done();
|
done();
|
||||||
|
Loading…
Reference in New Issue
Block a user