var net = require('net'); const { exec } = require("child_process"); var path = require('path'); async function playStuff() { return new Promise(function (resolve, reject) { exec(`node player.js file`, (error, stdout, stderr) => { if (error) { if (error.message.includes('already mounted')) { resolve(true) return; } else { resolve(false) return; } } if (stderr) { resolve(false) return; } resolve(true) }) }) } async function pauseStuff() { return new Promise(function (resolve, reject) { exec(`node player.js pause`, (error, stdout, stderr) => { if (error) { if (error.message.includes('already mounted')) { resolve(true) return; } else { resolve(false) return; } } if (stderr) { resolve(false) return; } resolve(true) }) }) } var server = net.createServer(function(connection) { connection.on('data', function(data) { // data is a Buffer, so we'll .toString() it for this example console.log(data.toString()); const input = data.toString() if (input.includes('play')) { playStuff() } else if (input.includes('pause')) { pauseStuff() } }); }); // This creates a UNIX socket in the current directory named "nodejs_bridge.sock" server.listen((path.resolve(__dirname, "nodejs_bridge.sock"))); // Make sure we close the server when the process exits so the file it created is removed process.on('exit', function() { server.close(); }); // Call process.exit() explicitly on ctl-c so that we actually get that event process.on('SIGINT', function() { process.exit(); }); // Resume stdin so that we don't just exit immediately process.stdin.resume();