lib/network/oscHeaderScan.js

/**
 * @memberof module:webbci.network
 */

var osc = require('node-osc');

/**
 * Scan for OSC headers on a port and address
 * @memberof module:webbci
 * @param {any} address - OSC address
 * @param {any} port - OSC port
 * @param {any} duration - Duration of scan in milliseconds
 * @returns {Promise} Resolves with an array of found headers
 */
function oscHeaderScan(address, port, duration) {
	return new Promise(function (resolve, reject) {
		var server = new osc.Server(port, address);

		var headers = new Set();

		server.on("message", function (msg, rinfo) {
			var header = msg[0];
			headers.add(header);
		});

		setTimeout(() => {
			server.kill();
			resolve([...headers]);
		}, duration);
	});
}

module.exports = oscHeaderScan;