问题:通过管道从获取二进制数据后,以长连接无限的大文件的形式向客户端输出。每隔一段时间会中断连接。
解决:http response 输出的数据是由 ChlidProcess.stdout 获得的,子进程在stderr不断输出流,此时 ChildProcess.spawn 会打开stderr管道,如果没有任何操作去读取stderr内容,一段时间后stdout管道会停止输出。修改的方法是,如果子进程管道输出内容不需要处理,需要设置“Ignore”。
例如:
var process = require(‘child_process’)
process.spawn(‘datadownload’, [], { stdio: [‘pipe’, ‘pipe’, ‘ignore’] });