我有一个AWS S3对象,并在其上创建了一个读取流,如下所示:
const s3 = new AWS.S3();
const readStream = s3
.getObject(params)
.createReadStream()
.on('error', err => {
// do something
});
现在,当120秒后未将流读取到最后(例如,流媒体被客户端中止)时,error
事件将被触发:TimeoutError: Connection timed out after 120000ms
如何关闭流(或整个S3对象)?
我尝试了记录here的readStream.destroy()
,但它不起作用。
答案 0 :(得分:0)
我正在寻找类似情况的解决方案,并遇到了这个问题。
有一个AWS Request abort
method documented here,可让您在不接收所有数据的情况下取消请求(这与节点的http请求类似)。
您的代码应如下所示:
const s3 = new AWS.S3();
const request = s3.getObject(params);
const readStream = request.createReadStream()
.on('error', err => {
request.abort(); // and do something else also...
});
可能是错误的,但就我而言-我正在获取数据,并且想在达到某一点时停止流传输(即,在文件中找到特定数据,这只是检查它是否是唯一的问题)存在-我什么都不需要了。
以上内容同样适用于request
和node-fetch
模块。