Node.js は、開発者が JavaScript 言語を使用してサーバー側のコードを作成できるようにする JavaScript ランタイム環境です。開発プロセスでは、フロントエンドとバックエンド間のデータ送信やリクエストの転送を実現するための中間層として Node.js がよく使用されます。この記事では、中間層転送にNode.jsを使用する方法を詳しく紹介します。
1. Node.js の利点
Node.js は、イベント駆動型および非同期 I/O に基づく JavaScript 実行環境として、ネットワーク アプリケーション開発において次の利点があります。
非同期 I/O モデル: Node.js はイベント駆動型モデルを採用し、後続のコード実行をブロックすることなく I/O 操作を非同期化し、システムのスループットと同時実行パフォーマンスを向上させます。 - シングルスレッド モデル: Node.js はシングルスレッド モデルを採用しているため、複数のスレッド間の切り替えオーバーヘッドが回避され、開発者が同時コードを記述する複雑さが軽減されます。
- 軽量: Node.js のコア コードには数百のファイルとごく少数のライブラリ ファイルしか含まれていないため、迅速に起動して実行されます。
- 多数の小規模なデータ リクエストの処理に適しています: Node.js は、WebSocket、長い接続、HTTP ポーリングなど、多数の小規模なデータ リクエストの処理に適しています。
-
2. Node.js 中間層の転送
クライアント リクエストの送信-
フロント エンドとバック エンドの間では、クライアント リクエストが送信されます。中間層を介して転送する必要があります。ユーザーはブラウザを使用してフロントエンド ページにアクセスし、フロントエンド ページはリクエストを中間層に送信し、中間層はリクエストをバックエンドに転送します。
中間層のコード実装-
中間層は Node.js を使用して作成できます。コード実装の手順は次のとおりです:
(1) .js 用のノード HTTP サーバーを作成します。
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
// 处理请求
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
ログイン後にコピー
(2) サーバーのオープン ポートを設定し、ローカル マシン上の指定されたポートで HTTP リクエストをリッスンします。
(3) 中間層はフロントエンドリクエストを受信し、リクエスト情報をバックエンドサーバーに転送します。
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
const options = {
hostname: 'www.example.com',
port: 80,
path: req.url,
method: req.method,
headers: req.headers
};
const proxyReq = http.request(options, (proxyRes) => {
proxyRes.on('data', (chunk) => {
res.write(chunk);
});
proxyRes.on('end', () => {
res.end();
});
res.writeHead(proxyRes.statusCode, proxyRes.headers);
});
req.on('data', (chunk) => {
proxyReq.write(chunk);
});
req.on('end', () => {
proxyReq.end();
});
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
ログイン後にコピー
(4) 中間層がリクエストを処理する過程で、リクエスト情報をプロキシリクエストオブジェクトにコピーし、バックエンドのアドレス、ポート、リクエストメソッド、リクエストヘッダ情報を追加します。サーバーをプロキシ リクエスト オブジェクトに送信し、 http.request() 関数を使用してバックエンド サーバーをリクエストします。
(5) プロキシリクエストオブジェクトに、バックエンドサーバーから応答されたデータと終了イベントを処理し、応答データをフロントエンドに出力するリスニング関数を追加します。
(6) 同時に中間層にイベント監視を設定し、フロントエンドのリクエストデータ送信完了時にプロキシリクエストオブジェクトにリクエストデータを書き込み、データ書き込み後にend関数を使用する完成されました。
(7) 処理完了後、代理要求オブジェクトを解放します。
3. まとめ
この記事では、優れた非同期 I/O モデルとシングルスレッド モデルにより、中間層としてリクエスト転送を実装する Node.js の手法を紹介しました。 Node.js.js は、大量の小さなデータ要求を処理するための優れたツールになります。実際、Node.jsの中間層フォワーディング実装はアプリケーション分野で広く使われており、例えばマイクロサービスアーキテクチャではNode.jsを利用してサービス間の通信を実現し、システムの信頼性や拡張性を向上させています。
以上がNodejsで中間層の転送を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。