2013-10-28 49 views
0

我想知道一個好的解決方案是保持節點應用程序運行,直到可讀流已關閉。因此,在一個簡單的例子,比如這個:如何在流打開時保持節點應用程序運行?

var tcpVideoStream = new TcpVideoStream(options); 
var writeStream = fs.createWriteStream(options.fileName); 
tcpVideoStream.pipe(writeStream); 

怎樣才能讓我的應用程序的運行,以便它繼續寫流數據文件,直到讀取數據流,tcpVideoStream在這種情況下,關閉?即發出'結束'或'關閉'。

謝謝!

+0

將布爾值設置爲false,並且當可讀流結束時將其設置爲true。每當您嘗試寫入數據時,請確保布爾值仍然爲false,以確保可讀流仍處於打開狀態。 – Markasoftware

回答

1

在數據完全傳輸之前,您的應用程序將不會關閉。只有可讀流保持不變,您的應用程序纔會關閉,例如沒有data事件監聽器,或者您沒有調用resume()(如果它已經暫停)。使用pipe()就像添加一個data偵聽器。

例如,這將退出而沒有輸出。

var fs = require('fs'); 

var read = fs.createReadStream('./src'); 
var write = fs.createWriteStream('./dest'); 
read.pause(); 

read.on('data', function(chunk) { 
    console.log(chunk); 
}); 
+0

它是一個非常好的解決方案... –

相關問題