この記事では、Node.jsを使ってWebサーバーやTCPサーバーを作成する方法や処理テクニックを中心に紹介します。
Web サーバーの機能:
HTTP リクエストの受け入れ (GET、POST、DELETE、PUT、PATCH)
HTTP リクエストの処理 (自分で処理するか、他のプログラムに処理を要求します)
応答(ページ、ファイル、さまざまな種類のデータなどを返す)
一般的な Web サーバー アーキテクチャ:
Nginx、Apache: HTTP リクエストの受け入れ、リクエストを処理するユーザーの決定、リクエストの結果を返す責任を負います。 request
php-fpm /phpモジュール:自身に割り当てられたリクエストを処理し、処理結果を割り当て者に返します
一般的なリクエストタイプ:
リクエストファイル:静的ファイル(Webページ、写真、フロントを含む)を含む-end JavaScript ファイル、CSS ファイル... .)、プログラムによって処理されるファイル
は、ログイン、特定のデータの取得など、特定の操作を完了します。
Node.js Web サーバー:
他の特定の Web サーバー ソフトウェア (Apache、Nginx、IIS など) に依存しません
Node.js コードはリクエスト ロジックを処理します
Node.js コードは Web のさまざまな「構成」を担当しますサーバー
Express を使用して Web サーバーを作成します
シンプルな Express サーバー
静的ファイルの提供
ルーティング
ミドルウェア
シンプルな 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>});
静的ファイルスコープ:
Webページ、プレーンテキスト、画像、フロントエンドJavaScriptコード、CSSスタイルシートファイル、メディアファイル、フォントファイル
Expressを使用して静的ファイルにアクセス
<span style="white-space:pre"></span>app.use(express.static('./public'));
ルーティング:
対応する処理機能に異なるリクエストを割り当てます
区別: パス、リクエストメソッド
3 つのルーティング実装方法:
パス: 比較的単純な
ルーター: 同じルート内の複数のサブルートに適しています
ルート: APIに適しています
中
Connect: Node.js用のミドルウェアフレームワーク
階層化処理
各層が機能を実装
TCPサーバーを作成
ネットモジュールを使用して、 TCPサーバーを作成します
Telnetを使用してTCPサーバーに接続します
netを使用してTCPクライアントを作成します
node.jsを使用して単純なWebサーバーを構築します 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 で Web サーバーと TCP サーバーを作成する方法です。皆様のお役に立てれば幸いです。
関連する推奨事項:
以上がNode.js は Web サーバーと TCP サーバーを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。