node.js http 서버
Node.js를 사용하면 HTTP 모듈의 저수준 API를 사용하여 서버 및 클라이언트를 만들 수 있습니다. 우리가 처음 노드를 학습하기 시작했을 때, 우리는 모두 다음 코드를 만났습니다.
코드 사본은 다음과 같습니다.
var http = 요구 ( 'http');
http.createserver (function (req, res) {
res.end ( 'Hello World/n');
}). 듣기 (3000, "127.0.0.1");
Console.log ( "서버 펀딩 http://127.0.0.1:3000");
이 코드에는 HTTP 모듈에 대한 정보가 포함되어 있습니다.
1.`node.js`의 핵심에서 HTTP 모듈을 요청하고 향후 스크립트에서 사용할 변수를 할당하십시오.
스크립트는 http ~`node.js`를 사용하는 몇 가지 방법에 액세스 할 수 있습니다.
2.`createServer '를 사용하여 새 웹 서버 객체를 만듭니다
3. 스크립트는 익명 기능을 서버에 전달하여 웹 서버 객체에 요청을받을 때마다 발생하는 일을 알려줍니다.
4. 스크립트 라인 4는 웹 서버의 포트와 호스트를 정의합니다. 이는`http : //127.0.0.1 : 3000 '을 사용할 수 있음을 의미합니다.
서버를 방문하십시오
HTTP 헤더
각 HTTP 요청 및 응답에 대해 HTTP 헤더가 전송됩니다. HTTP 헤더는 콘텐츠 유형, 서버가 응답을 보낸 날짜 및 HTTP 상태 코드를 포함한 추가 정보를 보냅니다.
HTTP 헤더에는 많은 정보가 포함되어 있습니다. 다음은 Baidu 홈페이지에 포함 된 HTTP 헤더에 대한 정보입니다.
Baidu 홈페이지에 더 많은 웹 사이트를 추가 했으므로 여기의 데이터는 독자의 데이터와 다를 수 있습니다. 이것으로부터 우리는 Baidu가 웹 서버이고 BWS/1.1임을 알 수 있습니다.
아래는 위의 코드의 HTTP 헤더 정보입니다.
node.js의 리디렉션
노드에서는 다음 지침을 통해 방문자를 다른 웹 페이지로 리디렉션하기 위해 간단한 서버를 쉽게 만들 수 있습니다.
1. 고객에게 301 응답 코드를 보내고 고객에게 리소스가 다른 위치로 이전되었음을 알리십시오.
2. 위치 헤더를 보내 고객에게 리디렉션 할 위치를 알려줍니다.
관련 코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
var http = 요구 ( 'http');
http.createserver (function (req, res) {
res.writehead (301, {
'위치': 'http : //example-2.com/web'
});
res.end ();
}). 듣기 (3000, '127.0.0.1');
Console.log ( "서버 펀딩 http://127.0.0.1:3000");
브라우저를 열고 http://127.0.1:3000 페이지를 방문하면 리디렉션됩니다.
다른 요청에 응답하십시오
Node.js는 단일 응답을 생성 할 수있을뿐만 아니라 여러 유형의 요청에 대해 응용 프로그램에 일부 경로를 추가해야합니다. 노드는 URL 모듈을 사용하여이를 간단하게 만듭니다. URL 모듈을 사용하면 URL을 읽고 분석 한 다음 출력으로 무언가를 수행 할 수 있습니다.
코드 사본은 다음과 같습니다.
var url = 요구 사항 ( 'url');
var requesturl = "http://example.com:1234/path?query=String#hash"
이제 요청 된 URL을 분석하고 예를 들어 호스트 이름을 얻으려면 다음을 입력 할 수 있습니다.
코드 사본은 다음과 같습니다.
url.parse (requestUrl) .hostName
현재 그는 "example.com"으로 돌아갑니다.
포트 번호를 얻으려면 다음을 입력 할 수 있습니다.
코드 사본은 다음과 같습니다.
url.parse (requestUrl) .port
그는 "1234"로 돌아갈 것입니다.
이벤트 모듈
node.js는 동시성을 달성하는 가장 좋은 방법으로 간주됩니다. 이벤트 모듈은 Node.js의 핵심이며 다른 많은 모듈은이를 사용하여 이벤트 아키텍처 기능을 둘러싸고 있습니다. Node.js는 단일 스레드에서 실행되므로 동기 코드가 차단됩니다. 따라서 Node.js 코드를 작성할 때는 간단한 규칙을 고려해야합니다.
1. 차단하지 마십시오 -`node.js`는 단일 스레드이며 코드가 차단되면 다른 모든 것은 멈 춥니 다.
2. 빠른 반환 - 작업이 빠르게 돌아와야합니다. 빨리 돌아올 수 없다면 다른 프로세스로 마이그레이션해야합니다.
이벤트 모듈을 통해 개발자는 이벤트에 대한 리스너 및 프로세서를 설정할 수 있습니다. 클라이언트 js에서는 클릭 이벤트에 대한 리스너를 설정 한 다음 이벤트가 발생할 때 무언가를 할 수 있습니다.
코드 사본은 다음과 같습니다.
var tar = document.getElementById ( "대상");
tar.addeventListener ( "클릭", function () {
ALERT ( "클릭 이벤트 발사, 대상이 클릭되었습니다");
},거짓);
물론 이것은 IE 호환성을 고려하지 않고 예제이며 Node.js Focus 이벤트는 다음을 포함하여 네트워크 이벤트에 더 일반적입니다.
1. 웹 서버의 응답
2. 파일에서 데이터를 읽으십시오
3. 데이터베이스에서 데이터를 반환합니다
이벤트 모듈을 사용하여 먼저 새로운 이벤트 미터 인스턴스를 만들어야합니다.
코드 사본은 다음과 같습니다.
var eventimitter = require ( 'events'). Eventemitter;
var test = new Eventemitter ();
위의 내용이 코드에 추가되면 이벤트 및 청취자를 추가 할 수 있습니다. 다음과 같은 이벤트를 다음과 같이 보낼 수 있습니다.
코드 사본은 다음과 같습니다.
test.emit ( 'msg', '노드로 보내는 메시지');
첫 번째 매개 변수는 리스너의 일치에 사용할 수 있도록 이벤트를 설명하는 문자열입니다.
메시지를 받으려면 청취자를 추가해야하며, 예를 들어 이벤트가 트리거 될 때 처리해야합니다.
코드 사본은 다음과 같습니다.
test.on ( 'message', function (data) {
Console.log (데이터);
});
기본 이벤트 청취 모드 이벤트 모듈 AddListener/On, removelistener, removealllisteners, Emit 및 기타 기본 이벤트 청취 모드의 기본 이벤트 청취 모드 구현. 그것은 프론트 엔드 돔 트리의 이벤트와 동일하지 않습니다. 기포, 레이어 캡처에 의한 레이어와 같이 DOM에 속하는 이벤트 동작이 없으며 Preverdefault (), stoppropagation (), stopimmediatepropagation () 등과 같은 이벤트 전달을 처리 할 수있는 방법이 없기 때문입니다.
1.class : events.eventimitter : require ( 'events')를 통해 이벤트 미터 클래스를 가져옵니다. 이벤트 미터.
2.emitter.on (이벤트, 리스너) : 특정 이벤트의 리스너 배열의 테일에 리스너를 추가하십시오. 이미 터로 돌아가서 아래에 동일하게 체인 호출을 용이하게합니다.
3.emitter.removelistener (이벤트, 리스너) 이벤트의 청취자 배열에서 청취자를 삭제합니다.
4.emitter.listeners (이벤트) 지정된 이벤트의 리스너 배열을 반환합니다
자세한 내용은 Node.js API 문서를 참조하십시오
다음 코드는 5 초 이내에 자체 파괴 할 수있는 기밀 메시지를 보여줍니다.
코드 사본은 다음과 같습니다.
var eventimitter = require ( 'events'). Eventemitter;
var secretmessage = 새로운 이벤트 미터 ();
Secretmessage.on ( '메시지', 함수 (데이터) {
Console.log (데이터);
});
Secretmessage.on ( '자기 파괴', function () {
Console.log ( 'MSG가 파괴되었습니다!');
});
SecretMessage.emit ( '메시지', '이것은 비밀 메시지입니다.
settimeout (function () {
Secretmessage.emit ( '자기 파괴');
}, 5000);
이 스크립트에서는 두 명의 청취자가있는 두 개의 이벤트가 전송됩니다. 스크립트가 실행될 때 메시지 이벤트가 발생하여 "메시지"프로세서로 처리됩니다.
EventeMitter는 Node.js의 모든 곳에서 사용되므로 마스터하는 것이 중요합니다. Node.js는 I/O 작업을 통해 데이터를 얻고 이벤트 모듈을 널리 사용하여 비동기 프로그래밍을 지원합니다.
FAQ :
Q : 이벤트의 최대 청취자 수에는 제한이 있습니까?
A : 기본적으로 이벤트에 10 명의 청취자가 작동하면 경고가 발행됩니다. 그러나 Emitter.setMaxListener (N)를 사용 하여이 수량을 변경할 수 있습니다
Q : 모든 보낸 이벤트를들을 수 있습니까?
답 : 아니요. 응답하려는 각 이벤트에 대해 리스너를 만들어야합니다.