如何获得 '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)
时完成的)。
当然,如果流实现没有清理它在幕后使用的任何资源,那么这是一个错误,应该在相应项目的问题跟踪器上归档。
我正在从我正在使用的库中获取可读流 (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)
时完成的)。
当然,如果流实现没有清理它在幕后使用的任何资源,那么这是一个错误,应该在相应项目的问题跟踪器上归档。