-
-
Save bugre/f6803d1035401b776ad7628485f7dc26 to your computer and use it in GitHub Desktop.
Remote control multiple VLC apps via the command line using nodejs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// To start vlc with telnet remote control: | |
// ./VLC --extraintf rc --rc-host 0.0.0.0:3000 | |
// | |
// To connect to multiple vlc's | |
// node vlcrc.js host1:3000 host2:3000 | |
var net = require('net'); | |
var readline = require('readline'); | |
//addresses of servers | |
var addresses = []; | |
for (var i = 2; i < process.argv.length; i++) { | |
var parts = process.argv[i].trim().split(':'); | |
addresses.push({ port: parseInt(parts[1]), host: parts[0] }); | |
} | |
//connect to each server | |
var sockets = []; | |
addresses.forEach(function (address) { | |
var socket = net.createConnection(address.port, address.host); | |
socket.on('connect', function() { console.log('connected to ' + address.host + ' on port ' + address.port) }); | |
socket.on('end', function() { console.log(address.host + ':' + address.port + ' ended') }); | |
socket.on('data', function(data){ console.log(data.toString()); }); | |
sockets.push(socket); | |
}); | |
//relay command line input to each server | |
var rl = readline.createInterface(process.stdin, process.stdout); | |
rl.on('line', function(line) { | |
var command = line.trim(); | |
sockets.forEach(function (socket) { socket.write(command + '\n'); }); | |
if (command === 'quit') | |
{ | |
rl.close(); | |
process.stdin.destroy(); | |
} | |
rl.prompt(); | |
}).on('close', function() { | |
sockets.forEach(function (socket) { socket.end('quit\n'); }); | |
//process.exit(0); | |
}); | |
rl.prompt(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment