ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js は Web サーバーと TCP サーバーを作成します

Node.js は Web サーバーと TCP サーバーを作成します

小云云
小云云オリジナル
2017-12-06 13:08:181639ブラウズ

この記事では、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(&#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>});


静的ファイルスコープ:

Webページ、プレーンテキスト、画像、フロントエンドJavaScriptコード、CSSスタイルシートファイル、メディアファイル、フォントファイル

Expressを使用して静的ファイルにアクセス


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


ルーティング:

対応する処理機能に異なるリクエストを割り当てます

区別: パス、リクエストメソッド

3 つのルーティング実装方法:

パス: 比較的単純な

ルーター: 同じルート内の複数のサブルートに適しています

ルート: APIに適しています


Connect: Node.js用のミドルウェアフレームワーク

階層化処理

各層が機能を実装

TCPサーバーを作成

ネットモジュールを使用して、 TCPサーバーを作成します

Telnetを使用してTCPサーバーに接続します

netを使用してTCPクライアントを作成します


node.jsを使用して単純なWebサーバーを構築します JSコード部分:


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


上記の内容は、Node.js で Web サーバーと TCP サーバーを作成する方法です。皆様のお役に立てれば幸いです。

関連する推奨事項:

PHP と Node.js

Node.js TCP/IP データ通信を学ぶ

Node.JS 関連の知識

以上がNode.js は Web サーバーと TCP サーバーを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。