gpt4 book ai didi

node.js - 在 NodeJS 中将 Stream 输出传送到 Socket.IO

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:54 26 4
gpt4 key购买 nike

我打开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 标志-# 时,每次触发“data”事件时您都会获得百分比进度。

关于node.js - 在 NodeJS 中将 Stream 输出传送到 Socket.IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11345096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com