NodeJS Grab" live"其他进展产出

时间:2015-09-24 20:26:31

标签: node.js

(对于TL; DR /简短问题 - 见下文)

我在C中编写了一个小程序,根据我的麦克风输入(avarage听到的声音频率)吐出一堆数字 - 我想用这些数字做些事情(识别哨子模式等)。现在该程序运行正常 - 它每秒吐出大约30个数字,以换行符结束。

现在我在nodejs程序中需要这些信息,我实际上需要实时解析(或尽快)。

我尝试过使用exec和spawn,都使用.pipe并只是挂钩进入.stdout事件。

问题是那些似乎是缓冲的。代码:

whistleListen = spawn('./dist/sndpeek', ['--nodisplay','--print','--rolloff-only']);
whistleListen.stdout.on('data', function (data) {
    console.log('stdout: ' + data);
});

效果是程序启动,然后需要几秒钟,然后立即获得大约200行。看起来输出正在被缓冲。

我不希望这样 - 最好的事情就是实时接收,只需继续阅读,直到我点击\ n,然后解析数字,并用它做点什么。

有没有办法实现这个目标?

TL; DR

NodeJS生成一个程序(尝试过exec和spawn),然后我挂钩到程序的stdout。该程序用数字(每秒大约40行)吐出很多行。我需要实时解析这些数据,但是当我使用回调句柄时,我每隔几秒就会收到大约200行的转储。我需要加快速度。

提前致谢!

1 个答案:

答案 0 :(得分:1)

发现它!原来它不是NodeJS,而是我的C程序。我添加了这一行

setbuf(stdout, NULL);

现在是fprintf();不再缓冲,我在我的节点应用程序中为每个.stdout事件获得一个新行。

相关问题