https://evan-moon.github.io/2019/08/01/nodejs-event-loop-workflow/ 로우 레벨로 살펴보는 Node.js 이벤트 루프 1년 전, 필자는 setImmediate & process.nextTick의 차이점에 대해 설명하면서 Node.js의 이벤트 루프 구조에 대해 살짝 언급한 적이 있었다. 놀랍게도 독자 분들은 원래 설명하려고 했던 부분보다 이벤트 �� evan-moon.github.io
노드 js의 비동기 실행 예시 아래 코드는 createServer의 콜백 함수 내부이다. 해당 조건문을 들어갔다면 req.on의 콜백함수들을 먼저 실행하는 게 아니라, req.on의 콜백함수들을 내부적으로 먼저 등록해놓고, 그 아래의 코드부터 실행해준다. 따라서 res.setHeader와 res.end가 아래에서 먼저 실행되고 그 후 콜백함수 내의 리다이렉션이 실행되므로 에러가 난다. // createServer 콜백함수 내부 if(url ==='/message' && method === 'POST' ){ const body=[]; req.on('data', (chunk)=>{ console.log(chunk); body.push(chunk); }); req.on('end' , ()=>{ // 해당 콜백..
데이터 파싱하기 request의 on 메서드를 사용한다. on 메서드는 특정 event를 listen 할 수 있게 해주는 기능을 가지는데, 여기서 인자로 'data'와 콜백함수를 넣어줌으로써 'data event'가 발생할 때마다 해당 함수를 수행한다. on의 인자로 들어가는 콜백함수에서 데이터 chunk를 인자로 받아서, 만들어놓은 배열에 저장한다. request on 메서드에 인자 'end'와 콜백함수를 넣어서 data event를 listen하는 on 기능이 종료되면, 읽어온 데이터를 buffer에 concat하여 string으로 바꿔주고, 특정 인자 (여기서는 '=') 를 기준으로 파싱해준다. const body=[]; req.on('data', (chunk)=>{ console.log(chunk..
request에서 url 가져오기 localhost:3000 ___ 에서 ___의 부분을 가져온다. 아무것도 안써있으면 '/' 로 표시된다. 인자로 받아온 request 객체 에서 url 객체를 가져와, 변수에 저장한다. const url = req.url; if ( url === '/' ) .... response의 setHeader와 write 메서드를 통해 응답하기 인자로 받은 response 객체의 setHeader 메서드를 통해 write 메서드의 컨텐츠 타입을 정할 수 있다. 컨텐츠 타입을 html로 정했다면, wirte 메서드 내부에 html 소스코드를 삽입하여 html 소스를 응답(response)할 수 있다. write의 마지막엔 꼭 res .end() 메서드를 실행해서 write 메서드..