Heim  >  Artikel  >  Web-Frontend  >  So erstellen Sie Web- und TCP-Server in Node.js

So erstellen Sie Web- und TCP-Server in Node.js

亚连
亚连Original
2018-06-22 16:33:371145Durchsuche

In diesem Artikel werden hauptsächlich die Methoden und Verarbeitungsfähigkeiten der Verwendung von Node.js zum Erstellen von Webservern und TCP-Servern vorgestellt. Leser, die es benötigen, können es lernen.

Erstellen Sie einen Webserver mit dem http-Modul

Webserverfunktionen:

Akzeptieren Sie HTTP-Anfragen (GET, POST, DELETE, PUT, PATCH)

HTTP-Anfragen verarbeiten (selbst bearbeiten oder andere Programme damit beauftragen)

Eine Antwort geben (Seiten, Dateien, verschiedene Daten usw. zurückgeben)

Gemeinsame Webserverarchitektur:

Nginx, Apache: Verantwortlich für die Annahme von HTTP-Anfragen, die Bestimmung, wer die Anfrage bearbeitet, und die Rückgabe der Ergebnisse der Anfrage

php-fpm/ PHP-Modul: Verarbeitung der sich selbst zugewiesenen Anforderung und Rückgabe der Verarbeitungsergebnisse an den Auftraggeber

Gängige Anforderungstypen:

Anforderungsdateien: einschließlich statischer Dateien (Webseiten, Bilder, Front-End-JavaScript-Dateien, CSS-Dateien ...) und vom Programm verarbeitete Dateien

Führen Sie bestimmte Vorgänge aus: z. B. Anmelden, Abrufen bestimmter Daten usw.

Knoten .js-Webserver:

Verlässt sich nicht auf andere spezifische Webserver-Software (wie Apache, Nginx, IIS...)

Node.js-Code verarbeitet die Anforderungslogik

Node.js Der Code ist für verschiedene „Konfigurationen“ des Webservers verantwortlich

Erstellen eines Webservers mit Express

Einfacher Express-Server

Statischer Dateidienst

Routing

Middleware

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

Statischer Dateibereich:

Webseiten, einfacher Text, Bilder, Front-End-JavaScript-Code, CSS-Stylesheet-Dateien, Mediendateien, Schriftartdateien

Verwenden Sie Express, um auf statische Dateien zuzugreifen

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

Routing:

Andere zuweisen Anfragen an die entsprechenden Verarbeitungsfunktionen

Unterscheidung: Pfad, Anforderungsmethode

Drei Routing-Implementierungsmethoden:

Pfad: relativ einfach

Router: besser geeignet für mehrere Unterrouten unter derselben Route

Route: besser geeignet für API

Middleware

Connect: Middleware-Framework von Node.js

Schichtverarbeitung

Jede Ebene implementiert eine Funktion

Erstellen Sie einen TCP-Server

Verwenden Sie das Netzmodul, um einen TCP-Server zu erstellen

Verwenden Sie Telnet, um eine Verbindung zum TCP-Server herzustellen

Verwenden Sie net, um einen TCP-Client zu erstellen

Verwenden Sie node.js, um einen einfachen Webserver-JS-Codeteil zu erstellen:

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

Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

Fehler beim Laden des Pfads inlaydate.js

So implementieren Sie die Routenparameterübergabe in vue-router

So führen Sie Zellen mit jQuery zusammen, um eine Tabelle zu bedienen

Das obige ist der detaillierte Inhalt vonSo erstellen Sie Web- und TCP-Server in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn