ホームページ >ウェブフロントエンド >フロントエンドQ&A >Nodejsで中間層の転送を行う方法

Nodejsで中間層の転送を行う方法

PHPz
PHPzオリジナル
2023-04-26 09:11:17785ブラウズ

Node.js は、開発者が JavaScript 言語を使用してサーバー側のコードを作成できるようにする JavaScript ランタイム環境です。開発プロセスでは、フロントエンドとバックエンド間のデータ送信やリクエストの転送を実現するための中間層として Node.js がよく使用されます。この記事では、中間層転送にNode.jsを使用する方法を詳しく紹介します。

1. Node.js の利点

Node.js は、イベント駆動型および非同期 I/O に基づく JavaScript 実行環境として、ネットワーク アプリケーション開発において次の利点があります。

    非同期 I/O モデル: Node.js はイベント駆動型モデルを採用し、後続のコード実行をブロックすることなく I/O 操作を非同期化し、システムのスループットと同時実行パフォーマンスを向上させます。
  1. シングルスレッド モデル: Node.js はシングルスレッド モデルを採用しているため、複数のスレッド間の切り替えオーバーヘッドが回避され、開発者が同時コードを記述する複雑さが軽減されます。
  2. 軽量: Node.js のコア コードには数百のファイルとごく少数のライブラリ ファイルしか含まれていないため、迅速に起動して実行されます。
  3. 多数の小規模なデータ リクエストの処理に適しています: 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 サイトの他の関連記事を参照してください。

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