您可以为此使用 node-progress 和 Node 的 http 客户端(或 requestT),不需要 wget:
https://github.com/visionmedia/node-progress
例子:
var ProgressBar = require('../')
, https = require('https');
var req = https.request({
host: 'download.github.com'
, port: 443
, path: '/visionmedia-node-jscoverage-0d4608a.zip'
});
req.on('response', function(res){
var len = parseInt(res.headers['content-length'], 10);
console.log();
var bar = new ProgressBar(' downloading [:bar] :percent :etas', {
complete: '='
, incomplete: ' '
, width: 20
, total: len
});
res.on('data', function(chunk){
bar.tick(chunk.length);
});
res.on('end', function(){
console.log('\n');
});
});
req.end();
更新:
由于您想在后台进程中执行此操作并监听下载进度(在单独的进程中或您有什么),您可以使用 pub-sub 功能来实现,或者:
- 使用 Redis、RabbitMQ 或 ZeroMQ 等消息队列
- 在已知端口/UNIX 域上启动 TCP 服务器并监听它
资源:
http://nodejs.org/api/net.html