Node.js 16

[node.js] HTTP Digest 인증

Basic 인증과 Digest 인증 Basic 인증에서는 클라이언트의 사용자 이름과 암호가 Base64로 인코딩된 문자열을 보낸다. Base64는 암호화 형식이 아니므로 사용자 이름 및 암호를 일반 텍스트로 보내는 것과 동일하다고 간주해야 한다. 리소스를 보호해야 하는 경우 Basic 인증이 아닌 다른 인증 방법을 사용하는 것이 좋다. Digest 인증은 Basic 인증을 대체하기 위한 인증 방법이다. 서버에서는 nonce라는 난수 데이터 문자열을 클라이언트에 보낸다. 클라이언트에서는 추가 정보 중에서 사용자 이름, 암호 및 nonce를 포함하는 해시를 사용하여 응답한다. 이러한 교환 과정에서 발생하는 복잡성 및 데이터 해시 때문에 Digest 인증 방법을 사용하는 사용자의 자격 증명을 도용하거나 재사용..

Node.js 2015.05.09

[node.js] 이벤트

노드는 이벤트 루프 기반이므로 많은 객체가 이벤트를 발생시킬 수 있다.이벤트를 다룰 때 사용하는 용어는 아래와 같다. emit : 이벤트 발생listener : 이벤트가 발생했을 때 실행되는 함수 이벤트 기본모듈은 require('events')로 불러온다. 웹 서버에 새로운 요청이 들어왔을 때 이벤트가 발생하는데 발생한 이벤트는 모두 events.EventEmitter 객체이고 require('events').EventEmitter로 접근한다. EventEmitter 객체에 에러가 발생하면 error 이벤트가 발생한다. 만약 error 이벤트에 등록된 리스너가 있으면 리스터를 실행하고 없으면 스택 트레이스 출력 후 애플리케이션을 종료한다. 리스너 등록객체에 이벤트를 추가하려면 emitter.addLis..

Node.js 2015.05.05

[node.js] HTTP 동시 접속 성능 테스트

노드는 싱글 스레드로 이벤트 루프를 사용해 멀티스레드보다 동시 접속 시 좋은 성능을 낼 수 있다. 실제로 node.js의 성능을 테스트해볼 수 있다. 웹서버 실행 클라이언트 요청 시 2초 후 응답이 완료되는 웹서버를 작성한 후 실행한다. var server = require('http'); server.createServer(function(req, res) {res.writeHead(200, {'Content-Type':'text/plain'});setTimeout(function() {res.end('World\n');}, 2000);reset.write('Hello\n');}).listen(3000, 'localhost'); 클라이언트 요청 아파치벤치를 이용하여 클라이언트에서 100 동시 접속으로 ..

Node.js 2015.05.05

[node.js] 특징

논블록킹 I/O, 이벤트 루프 기반의 비동기 I/O 노드의 I/O는 모두 논블록킹 I/O이다. 이로인해 노드는 상당히 빠른 성능을 보여준다.노드의 I/O는 이벤트 루프를 기반으로 비동기로 실행된다. 따라서 I/O의 결과를 콜백 함수의 파라미터로 전달 받는다. 예제var server = require('http');server.createServer(); server.on('request', function(req, res){});server.listen(3000, 'localhost');console.log('서버가 시작되었습니다.'); 설명server.on('request')에서 request 이벤트에 콜백 함수 등록request 이벤트가 발생하면 이벤트 루프가 감지하여 콜백 함수를 실행 싱글 스레드코..

Node.js 2015.05.05

[node.js] require() 그리고 module.exports

개념노드는 require()와 module.exports를 사용하여 필요한 자바스크립트 파일을 불러온 뒤 참조하거나 호출한다. 노드에서 하나의 자바스크립트 파일은 하나의 모듈이 된다. 자바스크립트 파일내에서 정의한 객체는 기본적으로 파일 내부에서만 접근할 수 있다.함수 또는 변수를 module.exports에 할당하면 외부에서도 접근할 수 있다. 예제 user_module.jsvar something = module.exports = function(name, age) { this.name = name; this.age = age; this.about = function() { console.log(this.name +' is '+ this.age +' years old'); }; }; demo.jsva..

Node.js 2015.05.05

[node.js] 시작하기

1. node.js 다운로드 (https://nodejs.org/download/) 2. node.js 설치 3. node.js 버전 확인시작 > 실행 > cmd > node --version 4. node.js 샘플 코드 작성 helloworld.js// http server를 생성하기 위한 http 모듈 불러오기 var http = require('http'); // Configure our HTTP server to respond with Hello World to all requests. // HTTP 서버 설정 - 모든 요청에 대해 Hello World로 응답 var server = http.createServer(function (request, response) { response.write..

Node.js 2015.04.20