Maison  >  Article  >  interface Web  >  Node.js crée des serveurs Web et TCP

Node.js crée des serveurs Web et TCP

小云云
小云云original
2017-12-06 13:08:181579parcourir

Dans cet article, nous présentons principalement les méthodes et techniques de traitement d'utilisation de Node.js pour créer des serveurs Web et des serveurs TCP. Nous espérons que cela pourra aider tout le monde.

Fonctions du serveur Web :

Accepter les requêtes HTTP (GET, POST, DELETE, PUT, PATCH)

Traitement HTTP request (gérez-le vous-même, ou demandez à d'autres programmes de le gérer)

Réponse (pages de retour, fichiers, données diverses, etc.)

Common Web architecture du serveur :

Nginx, Apache : responsable de l'acceptation des requêtes HTTP, de la détermination de qui gérera la requête et du renvoi du résultat de la requête

php- Module fpm / php : Traite les requêtes qui lui sont assignées et renvoie les résultats du traitement au cédant

Types de requêtes courantes :

Fichiers de requête : y compris les fichiers statiques (pages Web, images, fichiers JavaScript front-end, fichiers css...) et les fichiers traités par le programme

Effectuer des opérations spécifiques : telles que la connexion, l'obtention de données spécifiques, etc.

Serveur web Node.js :

Ne dépend pas d'autres logiciels de serveur web spécifiques (tels qu'Apache, Nginx, IIS. ..)

Le code Node.js gère la logique des requêtes

Le code Node.js est responsable de diverses "configurations" du serveur Web

Utilisez Express pour créer un serveur Web

Serveur Simple Express

Serveur de fichiers statiques

Routage

Middleware

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


Statique portée du fichier :

Pages Web, texte brut, images, code JavaScript frontal, fichiers de feuille de style CSS, fichiers multimédias, fichiers de polices

Utilisez Express pour accéder aux fichiers statiques


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


Routage :

Attribuer différentes requêtes aux fonctions de traitement correspondantes

Distinction : chemin , méthode de requête

Trois méthodes de mise en œuvre du routage :

chemin : relativement simple

Routeur : plus adapté à plusieurs routes sous la même route Sous-route

route : plus adaptée à l'API

middleware

Connect : framework middleware pour Node. js

Traitement en couches

Chaque couche implémente une fonction

Créer un serveur TCP

Utiliser le module net pour créer un serveur TCP

Utilisez telnet pour vous connecter au serveur TCP

Utilisez net pour créer un client TCP


Utilisez node .js pour créer une partie de code JS de serveur Web simple :


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


Le contenu ci-dessus est créé par les méthodes de serveur Web Node.js et TCP, j'espère qu'il pourra aider tout le monde.

Recommandations associées :

PHP et Node.js

Node.js apprend la communication de données TCP/IP

Connaissance connexe de Node.JS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn