NodeJS로 작성된 TCP 서비스는 양말 파일(도메인 소켓)을 수신할 수 있으며 해당 HTTP 서비스도 동일한 작업을 수행할 수 있습니다. 양말 파일에 HTTP 서비스로 연결하는 것은 별 의미가 없지만 이는 단지 순수한 시도일 뿐입니다.
TCP 서비스는 이렇게 작성합니다
var net = require('net');
net.createServer(함수 (소켓) {
소켓.on('데이터', 함수(데이터) {
소켓.write('수신: ' 데이터);
});
}).listen('/tmp/node_tcp.sock');
위의 '/tmp/node_tcp.sock'에 연결하세요
텔넷 /tmp/node_tcp.sock
/tmp/node_tcp.sock 시도 중...
(null)에 연결되었습니다.
이스케이프 문자는 '^]'입니다.
안녕하세요!
수신: Hello World!
정확하게 말하면 이 글은 NodeJS의 TCP, HTTP 모니터링 도메인 소켓 파일이어야 합니다.
TCP 모니터링 도메인 소켓에는 여전히 매우 일반적입니다. 예를 들어 로컬 MySQL 서비스에 액세스하기 위해 '/tmp/mysql.sock'을 사용하는 등 로컬 데이터베이스 또는 캐시에 액세스할 때 이러한 작업이 수행되는 경우가 있습니다. 시작할 필요가 없으며 TCP 포트가 노출되어 보안이 향상되고 성능도 향상됩니다.
이제 고전적인 예를 수정한 NodeJS의 도메인 소켓 HTTP 모니터링을 살펴보겠습니다
var http = require('http');
http.createServer(함수(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn');
}).listen('/tmp/node_http.sock');
console.log('/tmp/node_http.sock에서 실행 중인 서버');
아직 브라우저에서 위의 HTTP 서비스에 접속하는 방법을 모르므로 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 = require('http');
var 옵션 = {
소켓 경로: '/tmp/node_http.sock',
메소드: 'GET',
경로: '/'
};
var req = http.request(옵션, 함수(res){
console.log('상태: ' res.statusCode);
console.log('HEADERS: ' JSON.stringify(res.headers));
res.on('data', 함수(청크){
console.log(chunk.toString());
});
});
req.end();
파일명이 http_client.js일 경우, 위 코드를 실행하세요.
노드 http_client.js
상태: 200
헤더: {"content-type":"text/plain","date":"Mon, 2015년 1월 26일 04:25:49 GMT","connection":"close","transfer-encoding":"chunked" }
안녕하세요
이 기사는 단지 기록을 위한 것입니다. HTTP 서비스가 도메인 소켓에서 수신 대기하도록 하는 실제 목적을 생각할 수 없으며 브라우저가 이에 액세스할 수 없습니다.