一個(gè)只讀流有如下方法、成員、和事件。
Event: 'data'
function (data) { }
'data'事件的參數(shù)是Buffer(默認(rèn)情況下),如果調(diào)用過(guò)setEncoding()方法,則參數(shù)為一個(gè)字符串。
Event: 'end'
function () { }
此事件在流遇到EOF(在TCP 中為FIN)時(shí)被觸發(fā),表示該流不會(huì)再有數(shù)據(jù)(不會(huì)再次觸發(fā)'data'事件)。如果該流 也是可寫(xiě)流,則它還可以繼續(xù)寫(xiě)入。
Event: 'error'
function (exception) { }
在收取數(shù)據(jù)出錯(cuò)時(shí)被觸發(fā)。
Event: 'close'
function () { }
內(nèi)部的文件描述符被關(guān)閉時(shí)被觸發(fā),并不是所有的流都會(huì)觸發(fā)此事件。(例如,一個(gè)進(jìn)入的(incoming)HTTP 請(qǐng) 求將不會(huì)觸發(fā)'close'事件)。
Event: 'fd'
function (fd) { }
當(dāng)數(shù)據(jù)流接收到文件描述符信息時(shí)觸發(fā)該事件(一個(gè)文件數(shù)據(jù)流包含兩部分信息:文件描述符信息和文件的數(shù) 據(jù)信息)。本事件只支持Unix 數(shù)據(jù)流,其他類(lèi)型的流不會(huì)觸發(fā)該事件。
stream.readable
一個(gè)布爾值,默認(rèn)為true。當(dāng)遇到錯(cuò)誤或流讀到結(jié)尾或者調(diào)用destory()函數(shù)后,該值被設(shè)置為false。
stream.setEncoding(encoding)
該函數(shù)設(shè)置data 事件返回字符串而不是Buffer 對(duì)象。編碼類(lèi)型可以設(shè)置為"utf8","ascii"或"base64"。
stream.pause()
暫停觸發(fā)data 事件。
stream.resume()
恢復(fù)觸發(fā)'data'事件。
stream.destroy()
關(guān)閉內(nèi)部的文件描述符。這樣該流將不會(huì)再觸發(fā)任何事件。
一個(gè)可寫(xiě)流具備以下方法、成員、和事件。
Event: 'drain'
function () { }
在一個(gè)wrire() 方法被調(diào)用并返回false 后觸發(fā),表明可以安全的再次寫(xiě)入該stream。
Event: 'error'
function (exception) { }
在異常發(fā)生赤錯(cuò)誤時(shí)被觸發(fā)。
Event: 'close'
function () { }
當(dāng)?shù)讓拥奈募枋龇呀K止時(shí)發(fā)出。
stream.writeable
一個(gè)boolean 值,缺省為true ,但是在一個(gè)'error'產(chǎn)生或是end() / destroy() 被調(diào)用后,會(huì)變?yōu)閒alse 。
stream.write(string, encoding='utf8', [fd])
使用指定的編碼將字符串字符串寫(xiě)入到流中。如果字符串已被刷新到內(nèi)核緩沖區(qū),返回true。返回false 則表明 內(nèi)核緩沖區(qū)已滿,數(shù)據(jù)將在未來(lái)被發(fā)送出去。'drain'事件用來(lái)通知內(nèi)核緩沖區(qū)何時(shí)為空。此方法的默認(rèn)編碼為 'utf8'。
如果指定了可選參數(shù)fd,它將被當(dāng)做一個(gè)文件描述符并通過(guò)流來(lái)發(fā)送。它只支持UNIX 流,否則會(huì)被忽略且沒(méi) 有任何提示。當(dāng)用這種方式發(fā)送文件描述符時(shí),在流清空之前關(guān)閉文件描述符可能導(dǎo)致發(fā)送出非法的描述符。
stream.write(buffer)
同上,除了使用一個(gè)原始緩沖區(qū)。
stream.end()
通過(guò)EOF 或FIN 來(lái)終止流。
stream.end(string, encoding)
根據(jù)指定的編碼發(fā)送字符串,并通過(guò)EOF 或FIN 來(lái)終止流。這對(duì)于減少發(fā)送數(shù)據(jù)包的數(shù)量是非常有用的。
stream.end(buffer)
同上,但使用一個(gè)緩沖區(qū)。
stream.destroy()
終止底層的文件描述符,此后流不再發(fā)出任何事件。
更多建議: