diff --git a/nodes/io/32-udp.html b/nodes/io/32-udp.html index 331962ec8..7be9b7483 100644 --- a/nodes/io/32-udp.html +++ b/nodes/io/32-udp.html @@ -62,7 +62,7 @@ @@ -123,6 +123,7 @@ +
Tip: leave address and port blank if you want to set using msg.ip and msg.port.
@@ -157,10 +158,9 @@ color:"Silver", defaults: { name: {value:""}, - addr: {value:"",required:true}, - //group: {value:""}, + addr: {value:""}, iface: {value:""}, - port: {value:"",required:true,validate:RED.validators.number()}, + port: {value:""}, base64: {value:false,required:true}, multicast: {value:"false"} }, diff --git a/nodes/io/32-udp.js b/nodes/io/32-udp.js index 8666d655c..7470904cb 100644 --- a/nodes/io/32-udp.js +++ b/nodes/io/32-udp.js @@ -41,7 +41,7 @@ function UDPin(n) { var msg; if (node.datatype =="base64") { msg = { payload:message.toString('base64'), fromip:remote.address+':'+remote.port }; } else if (node.datatype =="utf8") { msg = { payload:message.toString('utf8'), fromip:remote.address+':'+remote.port }; } - else { msg = { payload:message, fromip:remote.address+':'+remote.port }; } + else { msg = { payload:message, fromip:remote.address+':'+remote.port, ip:remote.address, port:remote.port }; } node.send(msg); }); @@ -95,16 +95,21 @@ function UDPout(n) { node.on("input", function(msg) { if (msg.payload != null) { - //console.log("UDP:",msg.payload); - var add = msg.destip || node.addr; - var por = msg.port || node.addr; - var message; - if (node.base64) { message = new Buffer(b64string, 'base64'); } - else { message = new Buffer(""+msg.payload); } - //console.log("UDP send :",add,por); - sock.send(message, 0, message.length, por, add, function(err, bytes) { - if (err) node.error("udp : "+err); - }); + var add = node.addr || msg.ip || ""; + var por = node.port || msg.port || 0; + if (add == "") { node.warn("udp: ip address not set"); } + else if (por == 0) { node.warn("udp: port not set"); } + else if (isNaN(por) || (por < 1) || (por > 65535)) { node.warn("udp: port number not valid"); } + else { + var message; + if (node.base64) { message = new Buffer(b64string, 'base64'); } + else if (msg.payload instanceof Buffer) { message = msg.payload; } + else { message = new Buffer(""+msg.payload); } + console.log("UDP send :",add,por,msg.payload.toString()); + sock.send(message, 0, message.length, por, add, function(err, bytes) { + if (err) node.error("udp : "+err); + }); + } } });