>  기사  >  웹 프론트엔드  >  Node.js는 웹 및 TCP 서버를 생성합니다.

Node.js는 웹 및 TCP 서버를 생성합니다.

小云云
小云云원래의
2017-12-06 13:08:181601검색

이 기사에서는 Node.js를 사용하여 웹 서버와 TCP 서버를 만드는 방법과 처리 기술을 주로 소개합니다.

웹 서버 기능:

HTTP 요청 수락(GET, POST, DELETE, PUT, PATCH)

HTTP 요청 처리(직접 처리하거나 다른 프로그램에 요청하여 처리)

응답 (페이지, 파일, 다양한 유형의 데이터 등 반환)

일반적인 웹 서버 아키텍처:

Nginx, Apache: HTTP 요청을 수락하고, 요청을 처리할 사람을 결정하고, 결과를 반환하는 역할을 담당합니다. request

php-fpm /php 모듈: 자신에게 할당된 요청을 처리하고 처리 결과를 할당자에게 반환합니다.

일반적인 요청 유형:

요청 파일: 정적 파일 포함(웹 페이지, 사진, 전면) -end JavaScript 파일, CSS 파일... .) 및 프로그램에 의해 처리된 파일

특정 작업(예: 로그인, 특정 데이터 가져오기 등)을 완료합니다.

Node.js 웹 서버:

다른 특정 웹 서버 소프트웨어(예: Apache, Nginx, IIS...)에 의존하지 않습니다.

Node.js 코드는 요청 논리를 처리합니다.

Node.js 코드는 웹의 다양한 "구성"을 담당합니다. server

Express를 사용하여 웹 서버 만들기

Simple Express 서버

정적 파일 제공

routing

middleware

Simple Express 서버:


var express = require('express'); 
var app = express(); 
app.get('', function(req, res){ 
<span style="white-space:pre"> </span>res.end(&#39;hello\n&#39;); 
<span style="white-space:pre"> </span>}); 
<span style="white-space:pre"> </span>app.listen(18001, function afterListen(){ 
<span style="white-space:pre"> </span>console.log(&#39;express running on http://localhost:18001&#39;); 
<span style="white-space:pre"> </span>});


정적 파일 범위:

웹 페이지, 일반 텍스트, 그림, 프런트 엔드 JavaScript 코드, CSS 스타일 시트 파일, 미디어 파일, 글꼴 파일

Express를 사용하여 정적 파일에 액세스


<span style="white-space:pre"></span>app.use(express.static(&#39;./public&#39;));


라우팅:

해당 처리 기능에 서로 다른 요청 할당

구별: 경로, 요청 방법

세 가지 라우팅 구현 방법:

경로: 상대적으로 간단함

라우터: 동일한 경로 아래의 여러 하위 경로에 더 적합

Route : API에 더 적합한 API

Middle

연결 : Node.js

Layered Processing에 대한 미들웨어 프레임 워크 기능을 구현합니다. TCP 서버 만들기

telnet을 사용하여 TCP 서버에 연결

net을 사용하여 TCP 클라이언트 만들기



node.js를 사용하여 간단한 웹 서버 구축 JS 코드 부분:


var http = require(&#39;http&#39;);
var url = require(&#39;url&#39;);
var path = require(&#39;path&#39;);
var fs = require(&#39;fs&#39;);
var dir, arg = process.argv[2] || &#39;&#39;; // 命令行第三个参数,用来接收目录,可为空,相对当前server.js文件的目录名称
// 比如使用命令 node server debug,意思就是debug文件夹与server.js文件同级
// 且你想以debug文件夹启动web服务
 
http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;
dir = dir ? dir : pathname; // 记住dir(目录)
pathname = dir ? pathname.replace(dir, dir + arg + &#39;/&#39;) : pathname; // 替换文件静态路径
if (path.extname(pathname) == "") {
pathname += "/";
}
if (pathname.charAt(pathname.length - 1) == "/") {
pathname += "index.html"; // 入口文件,此处默认index.html
}
 
fs.exists(pathname, function (exists) {
if (exists) {
switch (path.extname(pathname)) {
case ".html":
res.writeHead(200, {"Content-Type": "text/html"});
break;
case ".js":
res.writeHead(200, {"Content-Type": "text/javascript"});
break;
case ".css":
res.writeHead(200, {"Content-Type": "text/css"});
break;
case ".gif":
res.writeHead(200, {"Content-Type": "image/gif"});
break;
case ".jpg":
res.writeHead(200, {"Content-Type": "image/jpeg"});
break;
case ".png":
res.writeHead(200, {"Content-Type": "image/png"});
break;
default:
res.writeHead(200, {"Content-Type": "application/octet-stream"});
} 
// res可以自己添加信息来简单交互 比如可以修改点header信息 或者修改返回的资源数据
fs.readFile(pathname, function (err, data) {
res.end(data);
});
}
else {
res.writeHead(404, {"Content-Type": "text/html"});
res.end("<h1>404 Not Found</h1>");
}
});
}).listen(8085, "127.0.0.5"); // 服务器端口
console.log("server running at http://127.0.0.5:8085/");

위 내용은 Node.js로 웹과 TCP 서버를 만드는 방법인데, 모두에게 도움이 되었으면 좋겠습니다.

관련 권장사항:


PHP 및 Node.js


Node.js TCP/IP 데이터 통신 배우기

Node.JS 관련 지식

위 내용은 Node.js는 웹 및 TCP 서버를 생성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.