exports.id = 'tcpipclient'; exports.title = 'TCP/IP Client'; exports.group = 'TCP/IP'; exports.color = '#888600'; exports.version = '1.0.0'; exports.icon = 'exchange'; exports.input = false; exports.output = 0; exports.author = 'Lukas Muransky'; exports.variables = true; exports.options = { ip: '127.0.0.1', port: 9999 }; exports.traffic = false; exports.html = `
Hostname or IP address
Port
@(Helvar)
`; exports.readme = ` # TCP/IP Clients`; var CLIENTS = []; var tcpip; global.TCPIP_CLIENTS = []; exports.install = function(instance) { var client; instance.custom.reconfigure = function(o, old_options) { if (old_options) CLIENTS = CLIENTS.remove(function(b){ return b.id === old_options.id; }); var options = instance.options; if (!options.ip || !options.port) { instance.status('Not configured', 'red'); return; } options.id = instance.name; instance.custom.createClient(); TCPIP_CLIENTS = []; CLIENTS.forEach(n => TCPIP_CLIENTS.push(n)); }; instance.custom.createClient = function () { var o = instance.options; var opts = { ip: o.ip, port: o.port, helvar: o.helvar, id: o.id }; client = new Client(opts); CLIENTS.push(client); instance.status('Ready'); }; instance.on('options', instance.custom.reconfigure); instance.custom.reconfigure(); }; FLOW.trigger('tcpip.clients', function(next) { var clients = []; CLIENTS.forEach(n => clients.push(n.id)); next(clients); }); function Client(options) { var self = this; self.id = options.id; self.options = options; return self; }