検索
ホームページウェブフロントエンドjsチュートリアルNodeJS学習メモ ネットワークプログラミング_node.js

Node は豊富なネットワーク プログラミング モジュールを提供します

Node模块 协议
net TCP
dgram UDP
http HTTP
https HTTPS

TCP サービス イベントは次の 2 つのカテゴリに分類されます

(1)、サーバーイベント

net.createServer() によって作成されたサーバーの場合、それは EventEmitter インスタンスです。次のタイプのカスタム イベントがあります。

listening: listen() を呼び出してポートまたはドメイン ソケット (server.listen(port,listener) と略称) をバインドした後にトリガーされ、2 番目のパラメーターを通じて渡されます。

connection: 各クライアント ソケットがサーバーに接続するときにトリガーされます。これを記述する簡潔な方法は net.createServer() を介して行われ、最後のパラメーターが渡されます。

close: サーバーが閉じられるとトリガーされます。server.close() を呼び出した後、サーバーは新しいソケット接続の受け入れを停止しますが、現在の既存の接続は保持します。このイベントは、すべての接続が切断された後にトリガーされます。

error: このイベントは、サーバーで例外が発生したときにトリガーされます。

(2)、

接続イベント

サーバーは複数のクライアントとの接続を同時に維持でき、接続ごとに書き込みと読み取りが可能な一般的な Stream オブジェクトです。 Stream オブジェクトは、サーバーとクライアント間の通信に使用でき、データ イベントを通じて一方の端からもう一方の端にデータを読み取ることも、write() メソッドを通じて一方の端からもう一方の端にデータを送信することもできます。

data: 一方の端が write() を呼び出してデータを送信すると、もう一方の端が data イベントをトリガーします。イベントによって渡されたデータは write()

によって送信されたデータです。

end: このイベントは、接続のどちらかの端が FIN データを送信するとトリガーされます。

connect: このイベントはクライアントに使用され、ソケットがサーバーに正常に接続されたときにトリガーされます。

drain: いずれかのエンドが write() を呼び出してデータを送信すると、現在のエンドがこのイベントをトリガーします。

エラー: 例外

の場合に送信されます。

close: ソケットが完全に閉じられたときにトリガーされます

timeout: 一定期間が経過して接続がアクティブでなくなると、このイベントがトリガーされ、接続がアイドル状態であることがユーザーに通知されます。

TCP には、ネットワーク内の小さなデータ パケットに対する特定の最適化戦略があります。それは、データが一定量に達した場合にのみトリガーされる Nagle アルゴリズムです。

UDP サービス

UDP はユーザー データグラム プロトコルと呼ばれ、接続指向のサービスではありません。 Node の UDP は Stream インスタンスではなく単なる EventEmitter インスタンスであり、次のカスタム イベントがあります:

(1) メッセージ: UDP ソケットがネットワーク カード ポートをリッスンしてメッセージを受信するとトリガーされます。トリガーによって伝送されるデータは、メッセージ バッファー オブジェクトとリモート アドレス情報です。

(2) listen: このイベントは、UDP ソケットが listen を開始するとトリガーされます。

(3) close: このイベントは close() メソッドが呼び出されたときにトリガーされ、message イベントはトリガーされなくなります。メッセージ イベントを再度トリガーする必要がある場合は、再バインドする必要があります。

(4) エラー: 例外が発生するとトリガーされ、監視されていない場合は、直接スローされてプロセスが終了します。

HTTP サービス

Node の http モジュールは tcp サーバー (net モジュール) から継承され、接続ごとにスレッドを作成せず、メモリ使用量を非常に低く維持できるため、高い同時実行性を実現できます。 HTTP サービスと TCP サービスの違いは、キープアライブを有効にすると、TCP セッションを複数の要求と応答に使用できることです。 TCPサービスはコネクション単位で提供され、HTTPサービスはリクエスト単位で提供されます。 http モジュールは、接続からリクエストまでのプロセスをカプセル化します。

http モジュールは、接続に使用されるソケットの読み取りと書き込みを ServerRequest オブジェクトと ServerResponse オブジェクトに抽象化します。これらのオブジェクトは、それぞれ要求操作と応答操作に対応します。

(1) HTTPリクエスト

TCP 接続での読み取り操作の場合、http モジュールはそれらを ServerRequest オブジェクトとしてカプセル化します。たとえば、ヘッダー部分は req.method、req.url、req.headers であり、メッセージ本文のデータ部分は読み取り専用のストリーム オブジェクトとして抽象化されます。ビジネス ロジックがメッセージ本文のデータを読み取る必要がある場合は、メッセージ本文のデータ部分が読み取り専用のストリーム オブジェクトとして抽象化されます。動作するにはデータ フローを完了する必要があります。

(2) HTTPレスポンス

HTTP 応答は、基礎となる接続の書き込み操作をカプセル化し、書き込み可能なストリーム オブジェクトとして表示できます。

応答メッセージのヘッダー情報メソッド: res.setHeader() メソッドと res.writeHeader() メソッド。setHeader は複数回実行できますが、接続を有効にするには writeHeader を呼び出して書き込む必要があります。

メッセージ本文メソッドの一部: res.write() メソッドと res.end() メソッド

(3) HTTP サーバーイベント

接続: クライアントがサーバーとの TCP 接続を確立すると、接続イベントがトリガーされます

リクエスト: TCP 接続を確立した後、http モジュールの最下層はデータ ストリームから HTTP リクエストと HTTP レスポンスを抽象化し、リクエスト データがサーバーに送信されると、HTTP リクエスト ヘッダーを解析した後にイベントがトリガーされます。 ; in res.end() その後、TCP 接続は次のリクエストに使用できるようになります。

close: 新しい接続の受信を停止するには、server.close メソッドを呼び出します。このイベントは、既存の接続がすべて切断されたときにトリガーされます。

checkContinue: 一部のクライアントが大きなデータを送信する場合、最初にヘッダーに Expect: 100- continue を含むリクエストをサーバーに送信し、サービスがこのイベントをトリガーします。

connect: クライアントが CONNECT リクエストを開始するとトリガーされます

upgrade: クライアントが接続プロトコルのアップグレードをリクエストする場合、サーバーとネゴシエートする必要があり、クライアントはリクエスト ヘッダーに Updagrade フィールドを含めます

clientError: 接続されたクライアントがエラーを送信し、エラーがサーバーに送信されると、このイベントがトリガーされます

(4) HTTP クライアント

http モジュールは、HTTP クライアントを構築するための http.request(options, connect) を提供します。

ClientRequest オブジェクトでは、HTTP クライアントは応答と呼ばれ、応答ヘッダーが解析されるとすぐに応答イベントがトリガーされます。後続の応答メッセージは読み取り専用ストリームとして提供されます。

(5) HTTP クライアント イベント

response: このイベントは、サーバーのリクエストイベントに対応するクライアントがリクエストの発行後にレスポンスを受信したときにトリガーされます。

ソケット: 基礎となる接続プールで確立された接続が現在のリクエスト オブジェクトに割り当てられるとトリガーされます。

connect: クライアントがサーバーに CONNECT リクエストを送信し、サーバーがステータス コード 200 で応答すると、クライアントはこのイベントをトリガーします。

upgrade: クライアントがアップグレード リクエストをサーバーに送信したときに、サーバーが 101 スイッチング プロトコル ステータスで応答すると、クライアントはこのイベントをトリガーします。

Continue: クライアントは、Expect: 100- continue ヘッダーをサーバーに送信した後、より大きなデータを送信しようとします。サーバーが 100 continue ステータスで応答すると、サーバーはこのイベントをトリガーします。

WebSocket サービス

WebSocket は HTML5 の重要な機能として初めて登場しましたが、HTTP と比較して次のような利点があります。

(1) クライアントとサーバーは TCP 接続を 1 つだけ確立するため、使用できる接続数は少なくなります

(2) WebSocket サーバーはクライアントにデータをプッシュできます。これは、HTTP リクエスト応答モードよりもはるかに柔軟で効率的です

(3) プロトコルヘッダーの軽量化、データ送信の削減

Node には組み込みの WebSocket ライブラリはありませんが、コミュニティの ws モジュールは、有名なソケット.io などの WebSocket の基礎となる実装をカプセル化します

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

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

JavaScriptはCで書かれていますか?証拠を調べるJavaScriptはCで書かれていますか?証拠を調べるApr 25, 2025 am 12:15 AM

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

JavaScript通訳者とコンパイラにおけるC/Cの役割JavaScript通訳者とコンパイラにおけるC/Cの役割Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

JavaScript in Action:実際の例とプロジェクトJavaScript in Action:実際の例とプロジェクトApr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、