A simple RESTful web service in nodejs (2)

书接上回。完成了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/)的原创文章,转载请注明出处!

Leave a Reply

Your email address will not be published. Required fields are marked *