数据事件未触发Node.js

时间:2013-10-03 19:15:31

标签: javascript node.js youtube stream fs

我正在编写一个下载带有扩展名node-ytdl的YouTube视频的应用程序。我想在下载时向客户端发送进度指示器,因此我尝试获取块信息来计算它。我的代码看起来有点像这样。

        var writing = fs.createWriteStream('video.mp4');
        var stream = ytdl('https://www.youtube.com/watch?v=jofNR_WkoCE', { filter: function(format) { return format.container === 'mp4'; }, quality: "lowest" });
        stream.pipe(writing);

        var completed_len = 0;
        var total_len = 0;

        writing.on('data', function(chunk) {
            console.log('received data!');
            completed_len += chunk.length;
        });

        writing.on('close', function ()
        {
            console.log('close');
            res.send('completed!');
        });

奇怪的是,即使“关闭”也是如此。下载完成后会触发,我没有从“数据”中获取任何日志。事件。视频写得正确。我是Node.js流的新手。我做错了什么?

1 个答案:

答案 0 :(得分:2)

你刚刚遇错了。 'data'上将发生stream个事件,与ytdl创建的stream.on('data', function (chunk) { // ... }); 一样。

'close'

如果您使用readable streams或更早版本,则会在两个流上发生{{1}}个事件。 0.10将可写流的事件更改为Node 0.8