diff --git a/packages/node_modules/@node-red/nodes/core/network/31-tcpin.html b/packages/node_modules/@node-red/nodes/core/network/31-tcpin.html index 97c8eb4d7..01b4c606a 100644 --- a/packages/node_modules/@node-red/nodes/core/network/31-tcpin.html +++ b/packages/node_modules/@node-red/nodes/core/network/31-tcpin.html @@ -50,7 +50,8 @@
@@ -76,6 +77,7 @@ datatype:{value:"buffer"}, newline:{value:""}, topic: {value:""}, + trim: {value:false}, base64: {/*deprecated*/ value:false, required:true}, tls: {type:"tls-config", value:'', required:false} }, @@ -286,7 +288,8 @@
@@ -306,6 +309,7 @@ ret: {value:"buffer"}, splitc: {value:"0", required:true}, newline: {value:""}, + trim: {value:false}, tls: {type:"tls-config", value:'', required:false} }, inputs:1, diff --git a/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js b/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js index a2f033fa3..531b3ac2d 100644 --- a/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js +++ b/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js @@ -88,6 +88,7 @@ module.exports = function(RED) { this.datatype = n.datatype||'buffer'; /* buffer,utf8,base64 */ this.newline = (n.newline||"").replace("\\n","\n").replace("\\r","\r").replace("\\t","\t"); this.base64 = n.base64; + this.trim = n.trim || false; this.server = (typeof n.server == 'boolean')?n.server:(n.server == "server"); this.closing = false; this.connected = false; @@ -136,6 +137,7 @@ module.exports = function(RED) { var parts = buffer.split(node.newline); for (var i = 0; i\nfoo", topic: 'boo' }], { - payload: "ACK:foobar", + payload: "ACK:foobar", + topic: 'boo' + }, done); + }); + + it('should send & receive, then keep connection, and split return strings and reattach delimiter', function(done) { + var flow = [{id:"n1", type:"tcp request", server:"localhost", port:port, out:"sit", ret:"string", newline:"\\n", trim:true, wires:[["n2"]] }, + {id:"n2", type:"helper"}]; + testTCPMany(flow, [{ + payload: "foo", + topic: 'boo' + }, { + payload: "bar\nfoo", + topic: 'boo' + }], { + payload: "ACK:foobar\n", topic: 'boo' }, done); }); diff --git a/test/nodes/core/parsers/70-JSON_spec.js b/test/nodes/core/parsers/70-JSON_spec.js index 32c5062e8..c3a2216e0 100644 --- a/test/nodes/core/parsers/70-JSON_spec.js +++ b/test/nodes/core/parsers/70-JSON_spec.js @@ -45,7 +45,7 @@ describe('JSON node', function() { msg.payload.employees[0].should.have.property('lastName', 'Smith'); done(); }); - var jsonString = '{"employees":[{"firstName":"John", "lastName":"Smith"}]}'; + var jsonString = ' {"employees":[{"firstName":"John", "lastName":"Smith"}]}\r\n '; jn1.receive({payload:jsonString,topic: "bar"}); }); }); @@ -63,7 +63,7 @@ describe('JSON node', function() { msg.payload.employees[0].should.have.property('lastName', 'Smith'); done(); }); - var jsonString = Buffer.from('{"employees":[{"firstName":"John", "lastName":"Smith"}]}'); + var jsonString = Buffer.from(' {"employees":[{"firstName":"John", "lastName":"Smith"}]}\r\n '); jn1.receive({payload:jsonString,topic: "bar"}); }); }); diff --git a/test/nodes/core/parsers/70-XML_spec.js b/test/nodes/core/parsers/70-XML_spec.js index e8b281855..c5e13f952 100644 --- a/test/nodes/core/parsers/70-XML_spec.js +++ b/test/nodes/core/parsers/70-XML_spec.js @@ -56,7 +56,7 @@ describe('XML node', function() { should.equal(msg.payload.employees.lastName[0], 'Smith'); done(); }); - var string = 'JohnSmith'; + var string = ' JohnSmith\r\n '; n1.receive({payload:string,topic: "bar"}); }); }); @@ -76,7 +76,7 @@ describe('XML node', function() { should.equal(msg.foo.employees.lastName[0], 'Smith'); done(); }); - var string = 'JohnSmith'; + var string = ' JohnSmith\r\n '; n1.receive({foo:string,topic: "bar"}); }); }); @@ -96,7 +96,7 @@ describe('XML node', function() { should.equal(msg.payload.employees.lastName[0], 'Smith'); done(); }); - var string = 'JohnSmith'; + var string = ' JohnSmith\r\n '; n1.receive({payload:string, topic:"bar", options:{trim:true}}); }); });