1. node Stream 이란?
- 순차적인 데이터 집합체 (data pipeline) data buffer 로 볼 수 있다.
- 커넥션을 생성하고 데이터를 실시간대로 읽거나 쓸 수 있으며 사용 후에는 커넥션을 해제(종료) 한다.
2. 동작 예시
- 2GB 의 데이터가 있을 때, stream 을 생성한 후 특정 크기 만큼만 RAM에 로드해서 사용할 수 있다.
- 또한, RAM의 특정 크기 만큼의 데이터를 파일로 Write 할 수 있다.
- 비동기적으로만 얻을 수 있는 데이터 처리시 유용
3. Stream 의 종류
- Readable : 스트림으로 부터 읽음
- Writeable : 스트림으로 부터 출력
- Duplex : 스트림에 입력 및 출력 ( ex> TCP sockes )
- Transform : 입력 받은 스트림을 새로운 스트림으로 변환
3. 주로 사용하는 기능
- __dirname 현재 코드가 있는 파일의 디렉토리 주소를 반환한다. ( ex> console.log(__dirname) )
- __filename 현재 코드가 있는 파일의 주소를 반환한다. ( ex> console.log(__filename) )
- setInterval( "실행할 내용", 인터벌 간격(ms; millisecond 단위). 특정 시간 단위로 실행한다. (ex> setInterval(() =>{ console.log("read")} , 1000)
- setTimeout("실행할 내용", 타임아웃 시간(ms;millisecond 단위). 특정 시간이 지나면 실행한다. (ex> setTimeout(()=>{ console.log("timeout")}, 1000)
- clearTimeout("setTimeout()") 타임아웃을 초기화 한다.
https://nodejs.org/api/stream.html
Stream | Node.js v19.7.0 Documentation
nodejs.org
4. 스트림을 통한 파일 입출력
- highWaterMark 를 통하여 chunk 의 크기를 조절할 수 있다. ( default : 65536 )
5. Pipline을 사용한 순서 지정
- 스트림을 통한 데이터 입력 후 압축, 압축 후 저장을 할 때, 비동기 처리가 필요한데 이때 pipeline 을 사용하여 순서를 지정(동기)할 수 있다.
6. Promisify 를 사용한 리펙토링
- pipeline 코드를 promisify 를 사용해서 좀 더 재활용성, 가독성이 높은 코드로 작성할 수 있다.
'Node js > Syntax' 카테고리의 다른 글
Standard library (0) | 2023.03.08 |
---|---|
Buffer (0) | 2023.03.08 |
node convention (0) | 2023.03.08 |
npm (0) | 2023.03.08 |
module (0) | 2023.03.08 |