Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在客户端连接关闭时中止ReadStream_Node.js_Stream - Fatal编程技术网

Node.js 在客户端连接关闭时中止ReadStream

Node.js 在客户端连接关闭时中止ReadStream,node.js,stream,Node.js,Stream,我正在尝试发送一个(巨大)文件,该文件每秒通过的数据量有限(使用): 如果我在客户端浏览器取消下载,流将继续,直到完全传输。 我还用测试了上面的场景,同样的行为 如果浏览器关闭了请求,如何取消流? 编辑: 我可以通过使用获取连接close事件 req.connection.on('close',function(){}); 但是流既没有销毁,也没有结束或停止属性,我可以使用这些属性停止流的进一步读取 我确实提供了属性pause,但我宁愿停止节点读取整个文件,而不是停止接收内容(如文档中所述)

我正在尝试发送一个(巨大)文件,该文件每秒通过的数据量有限(使用):

如果我在客户端浏览器取消下载,流将继续,直到完全传输。
我还用测试了上面的场景,同样的行为

如果浏览器关闭了请求,如何取消流?


编辑: 我可以通过使用获取连接
close
事件

req.connection.on('close',function(){});
但是
既没有
销毁
,也没有
结束
停止
属性,我可以使用这些属性停止
的进一步读取


我确实提供了属性
pause
,但我宁愿停止节点读取整个文件,而不是停止接收内容(如文档中所述)。

我最终使用了以下肮脏的解决方法:

var aborted = false;

stream.on('data', function(chunk){
    if(aborted) return res.end();

    // stream contents
});

req.connection.on('close',function(){
    aborted = true;
    res.end();
});
如上所述,这不是一个很好的解决方案,但它很有效。

任何其他解决方案将不胜感激

我有同样的问题。你找到解决方案了吗?@user949300我已经为我的解决方案添加了一个答案,也许原力与你同在:)在我的情况下,这有点不同(不涉及浏览器,我只想读取文件的一部分)一个
stream.destroy()
似乎阻止可读流继续发出事件(而不是“关闭”)。
var aborted = false;

stream.on('data', function(chunk){
    if(aborted) return res.end();

    // stream contents
});

req.connection.on('close',function(){
    aborted = true;
    res.end();
});