diff --git a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js index 9e17463dd..4ebfdf0e4 100644 --- a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js +++ b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js @@ -702,7 +702,8 @@ module.exports = function(RED) { node.options.rejectUnauthorized = (node.verifyservercert == "true" || node.verifyservercert === true); } } - + node.v5 = () => node.options && node.options.protocolVersion == 5 + node.subscriptionIdentifiersAvailable = () => node.v5() && node.serverProperties && node.serverProperties.subscriptionIdentifiersAvailable n.autoConnect = n.autoConnect === "false" || n.autoConnect === false ? false : true; node.setOptions(n, true); @@ -925,7 +926,12 @@ module.exports = function(RED) { }; node.subscriptions[topic][ref] = sub; if (node.connected) { + const subIdsAvailable = node.subscriptionIdentifiersAvailable() node._clientOn('message',sub.handler); + // if the broker doesn't support subscription identifiers (e.g. AWS core), then don't send them + if (options.properties && options.properties.subscriptionIdentifier && subIdsAvailable !== true) { + delete options.properties.subscriptionIdentifier + } node.client.subscribe(topic, options); } };