如何在使用 HAPI 制作的 REST API 中取消时关闭下载流
How to close download stream on cancel in REST API made with HAPI
我已经用 HAPI 实现了一个 Rest API,它提供了从数据库下载 CSV 文件。当我使用 wget http://localhost/csv/download
开始下载并在下载过程中取消它时,服务器会一直推送流直到结束。
代码
async function downloadCsvHandler(request, responseToolkit) {
let responseStream = new Transform({
allowHalfOpen: false,
writableObjectMode: true,
transform: convertJsonToCsvMethod
})
return responseToolkit.response(responseStream)
}
问题
为什么HAPI即使下载被取消也没有关闭流?
问题是我使用 stream.pipeline
将我的流合并为一个,这导致流开始,但 HAPI 尚未开始使用。通过使用 stream1.pipe(stream2)
,直到 HAPI 从中读取流才会激活流,这也会导致流在 HAPI 停止时停止。
我已经用 HAPI 实现了一个 Rest API,它提供了从数据库下载 CSV 文件。当我使用 wget http://localhost/csv/download
开始下载并在下载过程中取消它时,服务器会一直推送流直到结束。
代码
async function downloadCsvHandler(request, responseToolkit) {
let responseStream = new Transform({
allowHalfOpen: false,
writableObjectMode: true,
transform: convertJsonToCsvMethod
})
return responseToolkit.response(responseStream)
}
问题
为什么HAPI即使下载被取消也没有关闭流?
问题是我使用 stream.pipeline
将我的流合并为一个,这导致流开始,但 HAPI 尚未开始使用。通过使用 stream1.pipe(stream2)
,直到 HAPI 从中读取流才会激活流,这也会导致流在 HAPI 停止时停止。