如何在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帮助解决奇怪的谜团。