如何获得 'close' 的可读流

How to get a readable stream to 'close'

我正在从我正在使用的库中获取可读流 (require('stream').Readable)*。

在一般意义上,一旦所有数据都被消耗,我该如何关闭这个(任何)可读流?我看到 end 事件,但从未收到 close 事件。

已尝试:.close()destroy()require('stream').Readable 上似乎不再可用,而在 require('fs') streams 上可用。

我相信以上内容会导致负载下出现一些不稳定的行为。即:运行 文件描述符不足、内存泄漏等,非常感谢任何帮助。

谢谢。

*) x-ray. Under the covers it uses enstore,它使用改编的 require('stream').Readable

可读流通常不会发出 close(它们会发出 end)。例如,close 事件更多用于可写流,以指示底层文件描述符已关闭。

一旦所有数据都被消耗,就不需要手动关闭可读流,它会自动结束(这是在流实现调用 push(null) 时完成的)。

当然,如果流实现没有清理它在幕后使用的任何资源,那么这是一个错误,应该在相应项目的问题跟踪器上归档。