2013-07-18 95 views
0

我有一個服務通過套接字連續發送數據。節點js流文件

拍攝的,而像這樣後的數據:

{base64} \n {base64} \n {base64} ... 

{base64}代表圖像數據。

如何控制數據流以便我可以一次獲得一張圖像(按照正確的順序)並對其執行一些有用的操作。

現在我只是管它到一個文件,但我敢肯定,有一個更好的辦法,而不是開始分析文件的分隔符,並實際上實現自己的背壓機制。

var streamRaw = fs.createWriteStream('raw.data'); 
socket.pipe(streamRaw, {end:false}); 

回答

0

我將引用substack's example here

var offset = 0; 

socket.on('readable', function() { 
    var buf = socket.read(); 
    if (!buf) return; 
    for (; offset < buf.length; offset++) { 
     if (buf[offset] === 0x0a) { 
      //you have buffered a full image as a base64 string, 
      // process it, or emit it as an event 
      processImageData(buf.slice(0, offset).toString()); 
      buf = buf.slice(offset + 1); 
      offset = 0; 
      socket.unshift(buf); 
      return; 
     } 
    } 
    socket.unshift(buf); 
}); 

你也可以認爲你流作爲讀取數據的套接字的塊,併發出成套的base64圖像數據,他們到達一個變換流。