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