2013-07-18 4 views
0

서비스를 소켓을 통해 계속 전송하고 있습니다. 잠시 후, 다음과 같다 캡처노드 js 스트림 파일

데이터 :

{base64}는 화상 데이터를 나타내는
{base64} \n {base64} \n {base64} ... 

.

데이터 흐름을 제어하여 한 번에 하나의 이미지를 올바른 순서로 가져와 유용하게 사용할 수 있습니다.

지금은 파일로 파이프 처리하지만, 구분자로 파일을 구문 분석하고 실제로 직접 압력 메커니즘을 구현하는 것보다 더 좋은 방법이 있다고 확신합니다.

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

답변

0

나는 substack's example here를 참조 할 것 : 당신은 데이터의 소켓의 덩어리를 읽고 그들이 도착 base64로 이미지 데이터의 전체 세트를 방출하는 변환 스트림으로 스트림의

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); 
}); 

당신도 생각 할 수있다.