2013-07-18 96 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图像数据,他们到达一个变换流。