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 c04fd77f7..5240b544a 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 @@ -178,6 +178,9 @@ module.exports = function(RED) { if (this.wholemsg) { try { msg = JSON.parse(data); + if (typeof msg !== "object" && !Array.isArray(msg) && (msg !== null)) { + msg = { payload:msg }; + } } catch(err) { msg = { payload:data }; diff --git a/test/nodes/core/io/22-websocket_spec.js b/test/nodes/core/io/22-websocket_spec.js index 40f6b21be..d2af1de28 100644 --- a/test/nodes/core/io/22-websocket_spec.js +++ b/test/nodes/core/io/22-websocket_spec.js @@ -179,6 +179,24 @@ describe('websocket Node', function() { }); }); + it('should receive wholemsg when data not object', function(done) { + var flow = [ + { id: "n1", type: "websocket-listener", path: "/ws", wholemsg: "true" }, + { id: "n2", type: "websocket in", server: "n1", wires: [["n3"]] }, + { id: "n3", type: "helper" }]; + helper.load(websocketNode, flow, function() { + createClient("n1").then(function(sock) { + helper.getNode("n3").on("input", function(msg) { + msg.should.have.property("payload", 123); + done(); + }); + sock.send(123); + }).catch(function(err) { + done(err); + }); + }); + }); + it('should send', function(done) { var flow = [ { id: "n1", type: "websocket-listener", path: "/ws" },