이 기사에서는 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('hello\n'); <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('express running on http://localhost:18001'); <span style="white-space:pre"> </span>});
정적 파일 범위:
웹 페이지, 일반 텍스트, 그림, 프런트 엔드 JavaScript 코드, CSS 스타일 시트 파일, 미디어 파일, 글꼴 파일
Express를 사용하여 정적 파일에 액세스
<span style="white-space:pre"></span>app.use(express.static('./public'));
라우팅:
해당 처리 기능에 서로 다른 요청 할당
구별: 경로, 요청 방법
세 가지 라우팅 구현 방법:
경로: 상대적으로 간단함
라우터: 동일한 경로 아래의 여러 하위 경로에 더 적합
Route : API에 더 적합한 API
Middle
연결 : Node.js
Layered Processing에 대한 미들웨어 프레임 워크 기능을 구현합니다. TCP 서버 만들기
telnet을 사용하여 TCP 서버에 연결
net을 사용하여 TCP 클라이언트 만들기
node.js를 사용하여 간단한 웹 서버 구축 JS 코드 부분:
var http = require('http'); var url = require('url'); var path = require('path'); var fs = require('fs'); var dir, arg = process.argv[2] || ''; // 命令行第三个参数,用来接收目录,可为空,相对当前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 + '/') : 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 서버를 만드는 방법인데, 모두에게 도움이 되었으면 좋겠습니다.
관련 권장사항:Node.js TCP/IP 데이터 통신 배우기
위 내용은 Node.js는 웹 및 TCP 서버를 생성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!