JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【Node.js】agent.createConnection()メソッドの使い方を実例付きで解説

agent.createConnection()メソッドとは

agent.createConnection()メソッドは、Node.jsの'http'モジュールが提供するインターフェースの一つです。このメソッドは、HTTPリクエストに利用できるソケット(socket)/ストリーム(stream)を生成します。

カスタムエージェントを作成してこのメソッドをオーバーライドすれば、接続処理をより柔軟に制御することも可能です。ソケット/ストリームを返す方法は次の2通りあります。

  • この関数から直接ソケット/ストリームをreturnで返す
  • コールバック関数の引数としてソケット/ストリームを渡す

構文

agent.createConnection(options, [callback])

パラメータ

このメソッドには以下のパラメータを指定できます。

  • options ― ストリームを生成する対象となる接続情報(ホスト名、ポート番号など)を含むオブジェクトです。

  • callback ― 省略可能な引数で、エージェントが生成したソケット接続を受け取るために使用されます。

基本的な使用例

まず、connection.jsという名前のファイルを作成し、以下のコードをコピー&ペーストしてください。ファイル作成後、次のコマンドでプログラムを実行します。

node connection.js

connection.js

// agent.createConnection()メソッドによる
// ソケット生成を確認するNode.jsプログラム

// httpモジュールを読み込む
const http = require('http');

// 新しいエージェントを作成
var agent = new http.Agent({});

// 作成したエージェントから接続を取得
var conn = agent.createConnection;
console.log('接続が正常に作成されました!');

// 接続の詳細を出力
console.log('Connection: ', conn);

実行結果

C:\home\node>> node connection.js
接続が正常に作成されました!
Connection: function connect(...args) {
    var normalized = normalizeArgs(args);
    var options = normalized[0];
    debug('createConnection', normalized);
    var socket = new Socket(options);

    if (options.timeout) {
        socket.setTimeout(options.timeout);
    }
    return socket.connect(normalized);
}

出力結果を見ると、createConnectionは内部で新しいSocketインスタンスを生成し、タイムアウト設定があれば適用した上で、socket.connect()を呼び出して接続を確立していることがわかります。

keepAliveオプションを使用した応用例

次に、keepAliveオプションを持つエージェントとの比較例を見てみましょう。

// agent.createConnection()メソッドによる
// ソケット生成を確認するNode.jsプログラム

// httpモジュールを読み込む
const http = require('http');

// 通常のエージェントを作成
var agent = new http.Agent({});

// keepAliveを有効化したエージェントを定義
const aliveAgent = new http.Agent({
    keepAlive: true,
    maxSockets: 5,
});

// keepAlive有効のエージェントで接続を作成
var aliveConnection = aliveAgent.createConnection;

// 通常のエージェントで接続を作成
var connection = agent.createConnection;

// 各接続の情報を出力
console.log('通常のエージェントで作成された接続: ', connection.toString);
console.log('keepAliveエージェントで作成された接続: ',
aliveConnection.toString);

実行結果

C:\home\node>> node connection.js
通常のエージェントで作成された接続: function toString() { [native code] }
keepAliveエージェントで作成された接続: function toString() { [native code] }

まとめ

agent.createConnection()は、HTTPリクエスト用のソケット接続を生成するための重要なメソッドです。デフォルトの挙動では内部でSocketを生成して接続を行いますが、独自のAgentクラスでこのメソッドをオーバーライドすることで、プロキシ対応やコネクションプーリングのカスタマイズなど、高度なネットワーク制御を実現できます。keepAlivemaxSocketsなどのオプションと組み合わせれば、パフォーマンスの最適化にも役立ちます。

  1. 【Node.js】script.createCachedData()メソッドの使い方と実行例を解説

    script.createCachedData()メソッドは、ScriptコンストラクタのcachedDataオプションと組み合わせて使用されるコードキャッシュ(V8コードキャッシュ)を作成するための組み込みAPIです。生成されたキャッシュデータは、遅延(レイテンシ)なく何度でも再利用でき、同じスクリプトを繰り返しコンパイル・実行する際のパフォーマンス向上に役立ちます。なお、このメソッドはNode.jsの「vm」モジュールに含まれるvm.Scriptクラスが提供しています。 構文 script.createCachedData() パラメータ このメソッドは単純にデータをキャッシュして返すだけ

  2. Node.jsのprocess.envとは?環境変数の取得方法を実例付きで解説

    Node.jsのprocess.envは、コマンドを実行しているユーザー環境(環境変数)の情報をオブジェクトとして取得するためのプロパティです。このオブジェクトには、シェルやホームディレクトリ、PATHなど、実行環境に関するあらゆる情報が含まれています。 構文 process.env 引数 process.envはユーザー環境のオブジェクトをそのまま返すため、引数などの入力は必要ありません。 使用例1:環境変数オブジェクト全体を表示する まず「env.js」という名前のファイルを作成し、以下のコードを貼り付けてください。ファイル作成後、次のコマンドでプログラムを実行します。 node env.