diff --git a/packages/node_modules/@node-red/nodes/core/io/22-websocket.js b/packages/node_modules/@node-red/nodes/core/io/22-websocket.js index 26bd430b5..2abef30a5 100644 --- a/packages/node_modules/@node-red/nodes/core/io/22-websocket.js +++ b/packages/node_modules/@node-red/nodes/core/io/22-websocket.js @@ -250,10 +250,11 @@ module.exports = function(RED) { this.on("input", function(msg) { var payload; if (this.serverConfig.wholemsg) { - var sess = JSON.stringify(msg._session); + var sess; + if (msg._session) { sess = JSON.stringify(msg._session); } delete msg._session; payload = JSON.stringify(msg); - msg._session = JSON.parse(sess); + if (sess) { msg._session = JSON.parse(sess); } } else if (msg.hasOwnProperty("payload")) { if (!Buffer.isBuffer(msg.payload)) { // if it's not a buffer make sure it's a string. diff --git a/test/nodes/core/io/22-websocket_spec.js b/test/nodes/core/io/22-websocket_spec.js index 72ff30765..18efbd028 100644 --- a/test/nodes/core/io/22-websocket_spec.js +++ b/test/nodes/core/io/22-websocket_spec.js @@ -481,7 +481,7 @@ describe('websocket Node', function() { }); }); - it('should feedback', function(done) { + it('should NOT feedback more than once', function(done) { var flow = [ { id: "server", type: "websocket-listener", path: "/ws", wholemsg: "true" }, { id: "client", type: "websocket-client", path: getWsUrl("/ws"), wholemsg: "true" }, @@ -497,11 +497,13 @@ describe('websocket Node', function() { }); var acc = 0; helper.getNode("output").on("input", function(msg) { - if (acc++ > 20) { - helper.clearFlows(); - done(); - } + acc = acc + 1; }); + setTimeout( function() { + acc.should.equal(1); + helper.clearFlows(); + done(); + }, 250); }); }); });