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

Node.js で Web サーバーと TCP サーバーを作成する方法

亚连
リリース: 2018-06-22 16:33:37
オリジナル
1220 人が閲覧しました

この記事では、Node.js を使用して Web サーバーと TCP サーバーを作成する方法と処理スキルを主に紹介します。必要な読者はそれを学ぶことができます。

http モジュールを使用して Web サーバーを作成します

Web サーバーの機能:

HTTP リクエストを受け入れる (GET、POST、DELETE、PUT、PATCH)

HTTP リクエストを処理する (自分で処理するか、他のプログラムにリクエストを要求する)処理します)

応答 (ページ、ファイル、さまざまな種類のデータなどを返す)

一般的な Web サーバー アーキテクチャ:

Nginx、Apache: HTTP リクエストの受け入れ、リクエストを処理するユーザーの決定、および返信を担当します。リクエストの結果

php -fpm/php モジュール: 自身に割り当てられたリクエストを処理し、処理結果を割り当て者に返します

一般的なリクエストの種類:

リクエスト ファイル: 静的ファイル (Web ページ、写真、フロントエンド 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に適しています

ミドルウェア

接続: Node.jsミドルウェアフレームワーク

階層化された処理

各層が実装関数

TCPサーバーを作成する

netモジュールを使用して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/");
ログイン後にコピー

上記は私があなたのためにまとめたものです。将来的に皆さんのお役に立てれば幸いです。

関連記事:

laydate.jsのパスの読み込みエラー

vue-routerで渡すルートパラメータの実装方法

jQueryを使ってテーブルを操作してセル結合を実現する方法

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート