2014-03-05 154 views
3

我有一个TLS连接的ClearTextStream,我想检查是否已经调用“结束”。实际的问题是,我试图在流中写入一些东西,然后出现“写入结束”错误。检查NodeJS ClearTextStream流是否“结束”?

现在为了避免这种情况,我只想检查是否已经调用“end”。我确实有一个“关闭”事件,但并不是在所有情况下都被解雇。

我找不到它在documentation,我找不到任何这样的搜索结果。

我可以检查错误事件(对我来说,抛出“写完后”)并处理那里的情况 - 但是在一开始真的没有办法检查这个吗?

谢谢!

回答

3

如果你得到一个write after end错误,这意味着你正在尝试将数据写入到一个Writable流已关闭(即不能接受了输入数据)。当可写流关闭时,将发出finish事件(请参阅the documentation)。另一方面,close事件由底层资源关闭时(例如当您正在阅读的文件描述符已关闭时)由Readable流发出。

作为ClearTextStreamDuplex流,它可以同时发射closefinish事件,但他们并不意味着同样的事情。在您的具体情况下,您应该听取finish事件并做出适当的反应。

另一个解决方案是检查this.endedthis.finished布尔(见the source code),但我不会建议,因为它们是私有变量,只反映了实施细则,而不是公共API。