书接上回。完成了server.js,这次轮到子进程wget.js了。wget.js比较简单,只是调用wget-improved module的方法,处理下message就行了。
var wget = require('wget-improved');
// retrieve arguments from parent process
var myArgs = process.argv.slice(2);
var url = myArgs[0];
var path = './tasks/' + myArgs[1] + '-' + myArgs[2] + '.tmp';
var options = {
};
var download = wget.download(url, path, options);
download.on('error', function(err) {
//console.log('wget error: ' + err);
process.send({error : true});
process.exit();
});
download.on('start', function(fileSize) {
//console.log('wget started, path= ' + path + ', size= ' + fileSize);
});
download.on('end', function(output) {
//console.log('downloaded to ' + path);
process.send({complete : true});
process.exit();
});
download.on('progress', function(progress) {
//console.log(progress);
});
process.on('terminate', function() {
//console.log('TERM SIG received');
process.exit();
});
值得注意的是从父进程(server.js)那里取得参数(父进程在fork时指定)的方法,以及向父进程发送event message的方法。
process.argv的第0、第1个参数是固定的,分别是”node”和当前进程的文件名,比如这里就是”node”和”./wget.js”。第2个参数才是从父进程传过来的自定义参数。
代码简单就不多说了,功能还有待改进,比如断点续传、超时重试等。
请移步下一篇:ffmpeg子进程的实现。
References:
https://github.com/bearjaws/node-wget
本文是悠然居(wordpress.youran.me)原创文章,如转载必须保留此告示。
本文为悠然居(https://wordpress.youran.me/)的原创文章,转载请注明出处!