NodeJS가 여러 요청을 처리하는 방법NodeJS는 하나의 JavaScript 스레드만 사용한다. 문제점각 요청마다 스레드를 지정할 수 없기 때문에, 결국 모두 하나의 스레드에서 실행될 것이다.이에 따라 보안 상의 문제가 제기될 것이다. 그렇다면, 만약 요청 A를 아직 처리 중이라면, 요청 B는 처리할 수 없는 것일까 ?➡️ 그렇지 않다 ! 둘 다 처리할 수 있다 ! 어떻게 둘 다 처리할 수 있을까 ?1. fs(파일 시스템)에 접근할 수 있는 코드들을 사용할 수 있다.하지만, 파일을 다루는 작업은 오래 걸릴 수 있다.이에 따라, 들어온 요청을 다루고 있을 때, 새로 들어온 요청은 기다리거나, 거부될 수 있다. 2. 이벤트 루프를 이용한다.이벤트 루프는 Node.js가 시작하면 프로그램에 의해 자동으로 ..
이벤트 기반 코드우선, 위 코드는 작성하는 순서대로 실행되는 것이 아님예를 들어, 23번째 줄의 코드는 25 ~ 27번째 줄의 코드 실행 후에 실행이 부분에서 매우 중요한 부분이 있는데,첫 번째는 응답 발송은 이벤트 리스너 실행이 끝났다는 의미가 아니라는 점즉, 응답이 발송된 후에도 이벤트 리스너는 계속해서 실행되고 있음두 번째는 25 ~ 27번째 줄의 코드와 같이 이벤트 리스너의 응답에 영향을 줄 수 있는 어떠한 처리를 하는 것은 잘못되었음이를 해결 하기 위해, 응답 코드를 이벤트 리스너에 포함시켜야 함따라서, 아래와 같이 코드를 바꾸어야 함 ↓ ↓ ↓ 이와 같이 Node.js는 함수를 함수 안에 넣으면 안에 넣은 함수를 나중에 실행하게되는데, 이를 비동기식이라고 부름 (함수 안에 넣은 함수가 항상 ..
라우터 요청서버는 우리가 입력하는 루트에 따라 기능이 달라짐이는 / 뒤에 무엇을 입력하느냐가 기능을 좌우하게 됨 만약 /만 입력했을 때 유저가 데이터를 입력하는 페이지를 로드하고 이 데이터가 전송된 후 서버에 있는 파일에 저장하게 하려면 아래와 같은 코드처럼 작성할 수 있음4 : /나 /example과 같이 URL을 새로운 상수에 저장5 : if문을 사용하여 URL이 스트링이며 값이 /와 동일하면 작동되게 함8 : action="/message"는 자동으로 생성된 요청이 전달될 URL을 추가해 주게 됨name="message"는 입력 데이터를 요청 및 추가하고 할당된 이름을 통해 액세스 하게 됨10 : 전체 함수의 작동을 중단하기 위하여 return을 붙여줌만약, return을 사용하여 반환하지 않으면 ..
응답 전송이 작업은 우리가 반송하길 원하는 데이터로 채우기 위해 사용할 수 있음4 : 새로운 헤더를 설정할 수 있음이렇게 하면 응답에 헤더를 붙이게 되고 응답의 일부가 될 컨텐츠 유형은 HTML이라는 일련의 메타 정보를 전달하게 됨5 ~ 8 : write는 res(response)에 데이터를 기록할 수 있고, 기본적으로 대단위 혹은 다수의 라인을 통해 작동함9 : 응답의 생성이 끝났음을 노드에 알려줌end를 호출한 이후부터는 더 이상 아무것도 입력해서는 안됨end 이후에 write를 계속 호출할 수 있지만 그 경우에는 오류가 발생함위 코드를 터미널에서 실행하고 localhost:3000으로 접속하면 아래와 같이 화면이 뜸이후 개발자 도구의 Network 탭에 들어가면 아래의 사진처럼 확인할 수 있음Hea..
Node 서버 생성Node 서버를 생성하는 여러가지 방법1 : Node.js는 전역으로 노출하는 특성이 있기때문에 Node.js로 실행하는 모든 파일에서 기본으로 require이라는 키워를 사용할 수 있음경로를 생략하면 http라는 글로벌 모듈을 찾게 됨 (파일 경로는 반드시 ./나 절대 경로의 경우 /로 시작)3 : rqListener는 7번째줄의 requestListener의 기능을 실행하는 함수이 함수는 두 가지 인수를 필요로 하는데, 첫 번째 인수에는 요청에 대한 데이터, 두 번째 인수에는 응답에 사용됨따라서, Node.js가 자동으로 들어오는 요청을 대변하는 객체를 제공하고 해당 요청으로부터 데이터를 읽을 수 있게끔하며 요청을 보낸 사람에게 응답을 보낼 수 있는 응답 객체를 주는 것7 : cre..