2

毎秒通過するデータ量が制限された(巨大な)ファイルを送信しようとしています(を使用TooTallNate/node-throttle):

var fs = require('fs');
var Throttle = require('throttle');
var throttle = new Throttle(64);

throttle.on('data', function(data){
    console.log('send', data.length);
    res.write(data);
});

throttle.on('end', function() {
    console.log('error',arguments);
    res.end();
});

var stream = fs.createReadStream(filePath).pipe(throttle);

クライアントのブラウザでダウンロードをキャンセルすると、ストリームは完全に転送されるまで続行されます。また、同じ動作で
上記のシナリオをテストしました。npm node-throttled-stream

ブラウザがリクエストを閉じた場合にストリームをキャンセルするには?


編集:

を使用して接続closeイベントを取得できます

req.connection.on('close',function(){});

しかし、これ以上読むのを止めるために使用できるstreamadestroyも an endorプロパティもありません。stopstream

私はプロパティを提供しますpause Docが、コンテンツの受信を停止するだけでなく、ノードがファイル全体を読み取るのを停止したいと思います(ドキュメントで説明されているように)。

4

1 に答える 1