繁体   English   中英

将流输出管道传输到NodeJS中的Socket.IO

[英]Piping Stream output to Socket.IO in NodeJS

我打开curl在后台下载一些ISO,然后将进度告知客户。 由于curl,wget和许多其他函数清除了输出。 我希望在浏览器中看到curl的输出。 我无法准确地传递它,因为浏览器无法理解,它基本上是通过ncurses或我不知道的东西来更改输出数据。 我该如何解决?

var spawn = require('child_process').spawn,
    curl    = spawn('curl', ['-oubuntu.iso','http://releases.ubuntu.com/10.04/ubuntu-10.04.4-desktop-i386.iso']);

curl.stderr.pipe(process.stdout); // Works perfectly:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  1  694M    1 13.5M    0     0  2193k      0  0:05:24  0:00:06  0:05:18 2439k

但是process.on("data")不一致,随机数会更改新行等。

好吧,process.stderr.on('data')实际上正在产生正确的数据,所以说它不一致是错误的。

似乎curl只是使用流程的stderr流更新进度状态的更改部分,这就是为什么每次事件触发时都获得不同的数据的原因。

我找不到解决此问题的方法(检查http://curl.haxx.se/docs/manpage.html ),您显然无法告诉curl以“原始”方式报告进度。

提示:使用curl标志-# ,每次触发“数据”事件时,您都会获得进度百分比。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM