如何在NodeJS中访问subprocess的套接字?
我目前遇到一个很奇怪的问题。
我正尝试使用NodeJSsubprocess启动VLC,然后使用套接字访问它的远程控制(RC)接口。 连接到此sockets时发生此问题。 我得到一个错误,连接被拒绝。 端口是开放的,应用程序是从防火墙允许的。
棘手的部分是,当我用这个接口手动打开VLC,只尝试在套接字上连接,它的工作原理。 我假设在产生的过程中的东西使事情不同,导致错误莫名其妙。
这是我试图运行的代码:
var spawn = require('child_process').spawn; var file_dir = "V:\\TEST\\"; var files = ["Ika.mkv", "Nami.mkv", "Azu.mkv"]; var player = spawn("C:\\Program Files (x86)\\VideoLAN\\VLC\\vlc.exe", ['--intf="rc"', '--rc-host="localhost:3000"', '--fullscreen', file_dir + files[0]]); var net = require('net'); var client = net.createConnection(3000, "localhost"); client.on('connect', function() { console.log('connected to VLC on port 3000'); client.write("add " + file_dir + files[1] + "\n"); client.write("enqueue " + file_dir + files[2] + "\n"); client.write("help" + "\n"); }); client.on('data', function(data) { console.log(data.toString()); }); client.on('end', function() { console.log('disconnected from server'); });
我已经在两台机器上试过这个代码,而且我遇到了同样的问题。
有些问题你可能会问: 什么操作系统? Windows 8.1
为什么我需要使用套接字? VLC没有任何从标准input或标准输出的接口。 我尝试了很多不同的select,他们什么都不做。
我在做什么? 一个媒体中心,一个网页界面。 我正在使用VLC作为媒体播放器。
你不能使用内置的HTTP接口吗? 它不适合我想要build立的。 我想要更多地pipe理媒体。
任何和所有的帮助将受到欢迎。 谢谢。
结果出于一些奇怪的原因,并不是所有的命令行参数都被传递给VLC实例。
我通过将RC接口的实例和将RC模式设置为localhost:3000来解决这个问题
这是产生一个进程的新线
var player = spawn("C:\\Program Files (x86)\\VideoLAN\\VLC\\vlc.exe", ['-I rc --rc-host=\"localhost:3000\"','--fullscreen', file_dir + files[0]]);
这个工作,只有倒台,它也创build了一个RC控制台窗口,但我可以忍受它。
感谢@ jfriend00帮助解决奇怪的谜团。