diff --git a/editor/js/ui/notifications.js b/editor/js/ui/notifications.js index a9e1f387b..8bd153e10 100644 --- a/editor/js/ui/notifications.js +++ b/editor/js/ui/notifications.js @@ -86,6 +86,9 @@ RED.notifications = (function() { } n.style.display = "none"; if (typeof msg === "string") { + if (!/
/i.test(msg)) { + msg = "
"+msg+"
"; + } n.innerHTML = msg; } else { $(n).append(msg); @@ -153,6 +156,9 @@ RED.notifications = (function() { var nn = n; return function(msg,options) { if (typeof msg === "string") { + if (!//i.test(msg)) { + msg = "
"+msg+"
"; + } nn.innerHTML = msg; } else { $(nn).empty().append(msg); diff --git a/nodes/core/logic/17-split.js b/nodes/core/logic/17-split.js index 88a6c3d6f..8cabbb5d0 100644 --- a/nodes/core/logic/17-split.js +++ b/nodes/core/logic/17-split.js @@ -71,7 +71,8 @@ module.exports = function(RED) { if (msg.hasOwnProperty("payload")) { if (msg.hasOwnProperty("parts")) { msg.parts = { parts:msg.parts }; } // push existing parts to a stack else { msg.parts = {}; } - msg.parts.id = msg._msgid; // use the existing _msgid by default. + msg.parts.id = RED.util.generateId(); // generate a random id + delete msg._msgid; if (typeof msg.payload === "string") { // Split String into array msg.payload = (node.remainder || "") + msg.payload; msg.parts.type = "string"; @@ -628,7 +629,7 @@ module.exports = function(RED) { group.msg = msg; var tcnt = group.targetCount; if (msg.hasOwnProperty("parts")) { tcnt = group.targetCount || msg.parts.count; } - if ((tcnt > 0 && group.currentCount >= tcnt) || msg.hasOwnProperty('complete')) { + if ((tcnt > 0 && group.currentCount >= tcnt) || msg.hasOwnProperty('complete')) { completeSend(partId); } } catch(err) { diff --git a/red/api/editor/comms.js b/red/api/editor/comms.js index 4da819489..d0e0cab2c 100644 --- a/red/api/editor/comms.js +++ b/red/api/editor/comms.js @@ -70,6 +70,9 @@ function start() { wsServer.on('connection',function(ws) { log.audit({event: "comms.open"}); var pendingAuth = (settings.adminAuth != null); + ws._nr_stack = []; + ws._nr_ok2tx = true; + if (!pendingAuth) { activeConnections.push(ws); } else { @@ -190,23 +193,22 @@ function publish(topic,data,retain) { } } -var stack = []; -var ok2tx = true; function publishTo(ws,topic,data) { - if (topic && data) { stack.push({topic:topic,data:data}); } - - if (ok2tx && (stack.length > 0)) { - ok2tx = false; + if (topic && data) { + ws._nr_stack.push({topic:topic,data:data}); + } + if (ws._nr_ok2tx && (ws._nr_stack.length > 0)) { + ws._nr_ok2tx = false; try { - ws.send(JSON.stringify(stack)); + ws.send(JSON.stringify(ws._nr_stack)); } catch(err) { removeActiveConnection(ws); removePendingConnection(ws); log.warn(log._("comms.error-send",{message:err.toString()})); } - stack = []; - var txtout = setTimeout(function() { - ok2tx = true; + ws._nr_stack = []; + setTimeout(function() { + ws._nr_ok2tx = true; publishTo(ws); }, 50); // TODO: OK so a 50mS update rate should prob not be hard-coded }