我有一个用于 TLS 连接的 ClearTextStream,我想检查是否已经调用了“end”。实际问题是,我正在尝试向流中写入一些内容,但出现“结束后写入”错误。
现在为了避免这种情况,我只想检查是否已经调用了“end”。我确实有一个“关闭”事件,但并非在所有情况下都会触发。
我在文档中找不到它,而且通过谷歌搜索也找不到类似的东西。
我可以检查错误事件(它为我抛出“结束后写入”)并处理那里的情况 - 但真的没有办法在开始时检查吗?
谢谢!
如果出现write after end错误,则意味着您正在尝试将数据写入Writable已关闭的流(即无法再接受输入数据)。当可写流关闭时,finish会发出该事件(请参阅文档)。另一方面,当底层资源关闭时(例如,当您正在读取的文件描述符关闭时),该close事件由流发出。Readable
由于 aClearTextStream是Duplex流,因此它可以发出close和finish事件,但它们的含义不同。在您的特定情况下,您应该倾听finish事件并做出适当的反应。
另一个解决方案是检查this.ended和this.finished布尔值(请参阅源代码),但我不建议这样做,因为它们是私有变量,仅反映实现细节,而不反映公共 API。
| 归档时间: |
|
| 查看次数: |
3472 次 |
| 最近记录: |