Home  >  Article  >  Web Front-end  >  How to create Web and TCP servers in Node.js

How to create Web and TCP servers in Node.js

亚连
亚连Original
2018-06-22 16:33:371143browse

This article mainly introduces the methods and processing skills of using Node.js to create Web servers and TCP servers. Readers who need it can learn it.

Create a Web server using the http module

Function of the Web server:

Accept HTTP requests (GET, POST, DELETE, PUT, PATCH)

Process HTTP requests (handle it yourself, or request other programs to handle it)

Respond (return pages, files, various types of data, etc.)

Common Web server architecture:

Nginx, Apache: responsible for accepting HTTP requests, determining who will handle the request, and returning the results of the request

php-fpm/php module: processing assigned to itself request, and return the processing results to the assignor

Common request types:

Request files: including static files (web pages, pictures, front-end JavaScript files, css files ...), and the files processed by the program

Complete specific operations: such as logging in, obtaining specific data, etc.

Node.js Web server:

Does not rely on other specific web server software (such as Apache, Nginx, IIS...)

Node.js code handles request logic

Node.js The code is responsible for various "configurations" of the Web server

Use Express to create a Web server

Simple Express server

Static file service

Routing

Middleware

Simple Express server:

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>});

Static file scope:

Web pages, plain text, images, front-end JavaScript code, CSS style sheet files, media files, font files

Use Express to access static files

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

Routing:

Assign different requests to the corresponding processing functions

Distinguishing: path, request method

Three routing implementation methods:

path: relatively simple

Router: more suitable for multiple sub-routes under the same route

route: More suitable for API

Middleware

Connect: Node.js middleware framework

Layered processing

Each layer Implement a function

Create TCP server

Use net module to create TCP server

Use telnet to connect to TCP server

Use net to create TCP client

Use node.js to build a simple web server JS code part:

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/");

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

Error in loading path in laydate.js

How to implement route parameter passing in vue-router

How to use jQuery to operate table to merge cells

The above is the detailed content of How to create Web and TCP servers in Node.js. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn