2014-03-05 85 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。