Maison >interface Web >js tutoriel >Node.js crée des serveurs Web et TCP
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('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>});
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('./public'));
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('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/");
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 :
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!