node-red-contrib-mog
Version:
mog
66 lines (53 loc) • 1.77 kB
JavaScript
var mdns = require('mdns');
var fs = require('fs');
var browser = mdns.createBrowser(mdns.tcp('nmos-node'));
console.log("Browser listenning...");
var obj = {
services: []
};
fs.writeFile('available-devices.json', JSON.stringify(obj), 'utf8', function (err) {
if (err) throw err;
console.log('Database initialized');
});
browser.on('serviceUp', function(service) {
console.log("service up: ", service);
//depois posso configurar aqui mais ou menos informaçao acerca dos serviços
var s = { interfaceIndex: service.interfaceIndex,
typeName: service.type.name,
protocol: service.type.protocol,
subtypes: service.type.subtypes,
fullyQualified: service.type.fullyQualified,
replyDomain: service.replyDomain,
flags: service.flags,
name: service.name,
networkInterface: service.networkInterface,
fullname: service.fullname,
host: service.host,
port: service.port,
addresses: service.addresses
};
obj.services.push(s);
var json = JSON.stringify(obj);
fs.writeFile('available-devices.json', json, 'utf8', function (err) {
if (err) throw err;
console.log('Saved!');
});
});
browser.on('serviceDown', function(service) {
console.log("service down: ", service);
for(var i = 0; i < obj.services.length; i++) {
if(obj.services[i].interfaceIndex == service.interfaceIndex) {
obj.services.splice(i, 1);
break;
}
}
var json = JSON.stringify(obj);
fs.writeFile('available-devices.json', json, 'utf8', function (err) {
if (err) throw err;
console.log('Saved!');
});
});
browser.on('error', function(error) {
//console.log("Ups!");
});
browser.start();