Bugfix: only execute node register callbacks after connection to the server has been made

This commit is contained in:
Olivier Verhaegen 2023-06-30 10:09:17 +02:00 committed by GitHub
parent a2b7e1a30c
commit 8e9169c123
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 1 deletions

View File

@ -84,6 +84,8 @@ module.exports = function(RED) {
node.sessionId = null;
node.subscribtionIndex = 1;
node.subscriptionIds = {};
/** Array of callbacks to be called once the connection to the broker has been made */
node.connectedCallbacks = [];
/** @type { StompClient } */
node.client;
node.setOptions = function(options, init) {
@ -134,10 +136,20 @@ module.exports = function(RED) {
*/
node.register = function(stompNode, callback = () => {}) {
node.users[stompNode.id] = stompNode;
if (!node.connected) {
node.connectedCallbacks.push(callback);
}
// Auto connect when first STOMP processing node is added
if (Object.keys(node.users).length === 1) {
node.connect(callback);
node.connect(() => {
while (node.connectedCallbacks.length) {
node.connectedCallbacks.shift().call();
}
});
} else {
// Execute callback directly as the connection to the STOMP server has already been made
callback();
}
}