Node.js http サーバー
Node.js を使用すると、HTTP モジュールの低レベル API を使用してサーバーとクライアントを作成できます。初めてノードの学習を開始したとき、誰もが次のコードに遭遇するでしょう:
このコードには、http モジュールに関する情報が含まれています。つまり、
1. `Node.js` のコアから HTTP モジュールをリクエストし、それを将来のスクリプトで使用するための変数に割り当てます。
その後、スクリプトは「Node.js」を介して「HTTP」を使用するためのメソッドにアクセスできるようになります。
2. `createServer` を使用して新しい Web サーバー オブジェクトを作成します
3. スクリプトは匿名関数をサーバーに渡し、Web サーバー オブジェクトにリクエストを受信するたびに何が起こるかを伝えます
4. スクリプトの 4 行目は Web サーバーのポートとホストを定義します。これは、`http://127.0.0.1:3000` を使用できることを意味します
サーバーにアクセスするため
HTTP ヘッダー
HTTP リクエストとレスポンスごとに、HTTP ヘッダーが送信されます。HTTP ヘッダーは、コンテンツ タイプ、サーバーがレスポンスを送信した日付、HTTP ステータス コードなどの追加情報を送信します。
http ヘッダーには多くの情報が含まれています。以下は、私の Baidu ホームページに含まれる http ヘッダー情報です。
Baidu ホームページにさらに Web サイトを追加したため、ここのデータは読者のデータと異なる可能性があります。このことから、Baidu の Web サーバーは BWS/1.1
であることがわかります。上記のコードの http ヘッダー情報は次のとおりです:
Node.js のリダイレクト
ノードでは、訪問者を別の Web ページにリダイレクトするための単純なサーバーを簡単に作成できます。ガイドラインは次のとおりです。
1. 301 応答コードを顧客に送信して、リソースが別の場所に移動されたことを伝えます。
2. ロケーションヘッダーを送信して、クライアントにリダイレクト先を伝えます。
http://127.0.0.1:3000 ページがリダイレクトされます。
さまざまなリクエストに応答します
Node.js は単一の応答を作成できるだけでなく、複数の種類のリクエストに対して、アプリケーションにいくつかのルートを追加する必要があります。 Node では、URL モジュールを使用することでこれを簡単に実現します。 URL モジュールを使用すると、URL を読み取り、解析し、出力に対して何らかの処理を行うことができます。
ポート番号を取得するには、次のように入力します:
イベントモジュール
Node.js は同時実行性を実現する最良の方法と考えられています。 Events モジュールは Node.js の中核であり、イベントを中心とした機能を設計するために他の多くのモジュールで使用されます。 Node.js は単一スレッドで実行されるため、同期コードはブロックされます。したがって、Node.js コードを記述するときは、いくつかの簡単なルールを考慮する必要があります。
1. ブロックしない - 「Node.js」はシングルスレッドであり、コードがブロックすると他のすべてが停止します
2. 迅速な復帰 – 操作は迅速に復帰する必要があります。すぐに戻れない場合は、別のプロセスに移動する必要があります
イベント モジュールを使用すると、開発者はイベントのリスナーとハンドラーを設定できます。クライアント JS では、クリック イベントのリスナーを設定し、イベントの発生時に何かを行うことができます:
1. Web サーバーからの応答
2. ファイルからデータを読み取ります
3. データベースからデータを返します
イベント モジュールを使用するには、まず新しい EventEmitter インスタンスを作成する必要があります:
メッセージを受信するには、イベントがトリガーされたときにイベントを処理するリスナーを追加する必要があります。例:
1. クラス: events.EventEmitter: require('events').EventEmitter を通じて EventEmitter クラスを取得します。
2.emitter.on(event,listener): 特定のイベントのリスナー配列の末尾にリスナーを追加します。 チェーン呼び出しを容易にするためにエミッターを返します。以下も同様です。
3.emitter.removeListener(event,listener) はイベントのリスナー配列からリスナーを削除します
4.emitter.listeners(event) は、指定されたイベントのリスナー配列を返します
詳細については、Node.js API ドキュメント を参照してください。
次のコードは、5 秒以内に自己破壊される可能性のある機密メッセージを示しています。
secretMessage.on('自己破壊', function () {
console.log('メッセージは破棄されました!');
secretMessage.emit('メッセージ','これは秘密のメッセージです。5秒以内に自己破壊されます');
SecretMessage.emit('自己破壊');
},5000);
このスクリプトでは、2 つのイベントが送信され、2 つのリスナーがあります。スクリプトが実行されると、メッセージ イベントが発生し、「メッセージ」ハンドラー
によって処理されます。EventEmitter は Node.js のあらゆる場所で使用されるため、使いこなすことが重要です。 Node.js は I/O 操作を通じてデータを取得し、イベント モジュールを広範囲に使用して非同期プログラミングをサポートします
よくある質問:
Q: イベントの最大リスナー数に制限はありますか?
回答: デフォルトでは、イベントに 10 個のリスナーが操作されている場合、警告が発行されます。ただし、この数値は、emitter.setMaxListener(n)
Q: 送信されたすべてのイベントを聞くことはできますか?
答え: いいえ。応答したいイベントごとにリスナーを作成する必要があります