Nodejs가 작성한 TCP 서비스는 양말 파일 (도메인 소켓)에서들을 수 있으며 HTTP 서비스도 마찬가지입니다. HTTP 서비스로 양말 파일에 연결하는 것은 그리 의미가 없지만 여기서는 순수한 시도 일뿐입니다.
이것이 TCP 서비스가 작성되는 방식입니다
코드 사본은 다음과 같습니다.
var net = 요구 사항 ( 'net');
net.createserver (함수 (소켓) {
socket.on ( 'data', function (data) {
socket.write ( '수신 :' + data);
});
}). 듣기 ( '/tmp/node_tcp.sock');
위의 '/tmp/node_tcp.sock'을 연결하십시오.
코드 사본은 다음과 같습니다.
telnet /tmp/node_tcp.sock
/tmp/node_tcp.sock 시도 ...
(null)에 연결되었습니다.
탈출 문자는 '^]'입니다.
안녕하세요 세상!
수령 : 안녕하세요 세계!
정확히 말하면,이 기사는 Nodejs의 TCP 및 HTTP가 도메인 소켓 파일을 듣고 있어야합니다.
도메인 소켓을 듣는 TCP는 여전히 매우 일반적입니다. 예를 들어, '/tmp/mysql.sock'을 사용하여 기본 MySQL 서비스에 액세스하기 위해 기본 데이터베이스 또는 캐시에 액세스하는 경우가 있습니다. 따라서 TCP 포트를 노출시킬 필요가 없으며 보안도 개선되고 성능이 향상됩니다.
이제 도메인 소켓에서 Nodejs의 HTTP 청취를 살펴보고 클래식 예제에서 변환합시다.
코드 사본은 다음과 같습니다.
var http = 요구 ( 'http');
http.createserver (function (req, res) {
res.writehead (200, { 'content-type': 'text/plain'});
res.end ( 'Hello World/n');
}). 듣기 ( '/tmp/node_http.sock');
Console.log ( '/tmp/node_http.sock에서 실행되는 서버');
브라우저에서 위의 HTTP 서비스에 액세스하는 방법을 모르겠으므로 Telnet을 사용하여 테스트합니다.
코드 사본은 다음과 같습니다.
telnet /tmp/node_http.sock
/tmp/node_http.sock 시도 ...
(null)에 연결되었습니다.
탈출 문자는 '^]'입니다.
get / http / 1.1
HTTP/1.1 200 OK
컨텐츠 유형 : 텍스트/일반
날짜 : 2015 년 1 월 26 일 월요일 04:21:09 GMT
연결 : 계속하십시오
전송 인코딩 : 청크
기음
안녕하세요 세계
0
'/tmp/node_http.sock'에서 http 요청을 올바르게 처리 할 수 있습니다.
Nodejs HTTP 클라이언트를 사용하여 액세스하십시오
코드 사본은 다음과 같습니다.
var http = 요구 ( 'http');
var 옵션 = {
SocketPath : '/tmp/node_http.sock',
방법 : 'get',
길: '/'
};
var req = http.request (옵션, 함수 (res) {
console.log ( 'status :' + res.statuscode);
console.log ( '헤더 :' + json.stringify (res.headers));
res.on ( 'data', function (chunk) {
console.log (chunk.tostring ());
});
});
req.end ();
파일 이름이 http_client.js 인 경우 위 코드를 실행하십시오.
코드 사본은 다음과 같습니다.
노드 http_client.js
상태 : 200
헤더 : { "Content-Type": "Text/Plain", "Date": "2015 년 1 월 26 일 Mon, 2015 년 1 월 26 일 04:25:49 GMT": "Close", "Transfer-Encoding": "Chunked"}
안녕하세요 세계
이 기사는 기록적인 것이며, HTTP 서비스가 도메인 소켓에서 듣게하는 실제 목적을 상상할 수 없으며 브라우저에 액세스 할 수 없습니다.