深く浅く、NodeJS-データ通信、NETモジュール運行メカニズム
深く浅く、NodeJS-データ通信、NETモジュール運行メカニズム
2014-04-22 02:11 by Barret Lee、 979 読みます 2 コメント、 コレクション、 編集
インターネットの操作は、最も根本的なドライバは情報のインタラクションであり、NodeJSはデータインタラクションというブロックで非常に実感があり、非同期プログラミングはとても快適です.NodeJSのデータ通信について、最も基本的な二つのモジュールはNETとHTTPです.前者はTCPに基づくパッケージです.後者の本質はTCP層ですか?それともTCP層ですか?
本論文ではまずNodeJSのNETモジュールの動作メカニズムを述べ、次にHTTPモジュールについてお話しします.
本論文の住所:http://www.cnblogs.com/hustskyking/p/nodejs-net-module.html、転載はソースアドレスを明記してください.
一、サーバとクライアントの相互作用
NodeJS下層支えは v 8,v 8はC++で作成したJavaScriptコードをコンパイルして実行するライブラリで、TCP/UDPと言えば、C/C++の子供靴を書いても、慣れないとは思いません.socket接続を作る時、基本的に関連する知識があります.
ここではまず、サーバー側とクライアント間のいくつかの共通性と違いについて説明します.データのインタラクションに関しては、ServerとClientの間にパイプラインが確立されており、このパイプラインには2つの分岐があり、一つはSからCまでのデータを送るためのもので、もう一つはCからSまでのデータを送るためのものであると想像できます.このパイプはどうやって作りますか?
まず、Serverは地元のあるポート(ポートというのは、対外交流の屋台を理解できる)をモニターしています.Clientは自分が誰と交流するかを明確にしています.彼はServerの屋台を訪問します.そこで両者の間でコミュニケーションができます.したがって、ServerとClientの違いは明らかであり、Serverはポートを傍受し、Clientはポートを訪問する.
Unix/Linuxシステムはwindowsと違って、彼はポートをモニターしたり、ファイルをモニターしたりできます.つまり彼はポートとファイルを対外交流の屋台として利用できます.Clientは一つのファイルにアクセスしてServerとpipeを作成することができます.
二、NodeはどのようにTCPサーバをオープンしますか?
コンピュータにNodeをインストールしてから、Nodeが提供するモジュールを引用して、Nodeはファイル処理(FireSystem)、コンソール(Consolie)、データストリーム(Stream)などの多くのモジュールを内蔵しています.TCP接続を確立するために必要なのはNodeのNETモジュールです.モジュールを使うのは簡単です.
NodeでTCPサーバをオープンします.
三、クライアントプログラムを書いてサーバと対話する
Socket、つまりパイプがまだ存在しない以上、通信は存在しないはずです.クライアントプログラムを以下に書きます.
データの通信はとても簡単です.まずサーバプログラムを実行します.
四、事件に基づく哲学
まず、NodeJSのEventEmitterモジュールについて説明します.このモジュールはイベントセンターです.前に関連した内容を書きました.プロファイル版のEventEmitterを見ることができます.私をつつく.EventEmitterということは、イベントをイベントプールに追加したり、トリガートリガイベントを実行したりすることができます.もちろん、イベントプールからイベントオフを削除することができます.
NETモジュールはEventEmitterを継承していますので、彼が作成した多くのオブジェクトは以下の通りです.
JavaScriptはイベントに基づいた言語で、ほとんどの動作はイベントによって駆動されます.これは非同期プログラミングにおいて非常に際立っています.
五、関連APIの列挙
Serverにはlisten関数以外にも多くのインターフェースがあります. また、write、end、destroy、pause、reumeなど、豊富なインターフェースがあります.ここで詳細を見ることができます.
六、まとめ
本来はチャットルームを書こうとしましたが、このような簡単なコードネットワーク上では、いずれもTCPがサーバとクライアントとの相互作用過程に接続されていることを明確にし、深い話題を次回に残すことが目的です.
七、参考資料 http://nodejs.org/api/net.html
作者:
http://nodejs.org/api/net.html
出典:
Barret Lee
この著作権は作者とブログ園に共有されています.転載を歓迎します.しかし、作者の同意なしにこの声明を保留しなければなりません.文章のページの明確な位置で原文の接続を提供します.
カテゴリ:
http://www.cnblogs.com/hustskyking/、
JavaScript
ラベル:
Node、
nodejs
2014-04-22 02:11 by Barret Lee、 979 読みます 2 コメント、 コレクション、 編集
インターネットの操作は、最も根本的なドライバは情報のインタラクションであり、NodeJSはデータインタラクションというブロックで非常に実感があり、非同期プログラミングはとても快適です.NodeJSのデータ通信について、最も基本的な二つのモジュールはNETとHTTPです.前者はTCPに基づくパッケージです.後者の本質はTCP層ですか?それともTCP層ですか?
本論文ではまずNodeJSのNETモジュールの動作メカニズムを述べ、次にHTTPモジュールについてお話しします.
本論文の住所:http://www.cnblogs.com/hustskyking/p/nodejs-net-module.html、転載はソースアドレスを明記してください.
一、サーバとクライアントの相互作用
NodeJS下層支えは v 8,v 8はC++で作成したJavaScriptコードをコンパイルして実行するライブラリで、TCP/UDPと言えば、C/C++の子供靴を書いても、慣れないとは思いません.socket接続を作る時、基本的に関連する知識があります.
ここではまず、サーバー側とクライアント間のいくつかの共通性と違いについて説明します.データのインタラクションに関しては、ServerとClientの間にパイプラインが確立されており、このパイプラインには2つの分岐があり、一つはSからCまでのデータを送るためのもので、もう一つはCからSまでのデータを送るためのものであると想像できます.このパイプはどうやって作りますか?
まず、Serverは地元のあるポート(ポートというのは、対外交流の屋台を理解できる)をモニターしています.Clientは自分が誰と交流するかを明確にしています.彼はServerの屋台を訪問します.そこで両者の間でコミュニケーションができます.したがって、ServerとClientの違いは明らかであり、Serverはポートを傍受し、Clientはポートを訪問する.
Unix/Linuxシステムはwindowsと違って、彼はポートをモニターしたり、ファイルをモニターしたりできます.つまり彼はポートとファイルを対外交流の屋台として利用できます.Clientは一つのファイルにアクセスしてServerとpipeを作成することができます.
二、NodeはどのようにTCPサーバをオープンしますか?
コンピュータにNodeをインストールしてから、Nodeが提供するモジュールを引用して、Nodeはファイル処理(FireSystem)、コンソール(Consolie)、データストリーム(Stream)などの多くのモジュールを内蔵しています.TCP接続を確立するために必要なのはNodeのNETモジュールです.モジュールを使うのは簡単です.
var net = require('net');
net
システムモジュールです.つまり、Nodeをインストールした後に持参するモジュールです.彼を恐れる必要はありません.実は彼の内部もとても簡単です.var Net = function(){};
Net.methodA = function (){};
Net.methodB = function (){};
module.exports = Net;
私たちは簡単にネットモジュールの内部実装を理解できます.彼はNetクラスです.上にたくさんのmethodsが結合されています.requireの後、Netクラスに戻ります.この時、私たちはNetで定義されたすべての方法と属性を思う存分使うことができます.NodeでTCPサーバをオープンします.
// server.js
var net = require('net');
var server = net.createServer(function(socket) { //'connection' listener
console.log('server connected');
socket.on('end', function() {
console.log('server disconnected');
});
socket.on('data', function(){
socket.end('hello\r
');
});
});
server.listen(8124, function() { //'listening' listener
console.log('server bound');
});
上のコードはよく分かります. net.createServer
TCPサービスを作成します.このサービスバインディングは8124のポートでServerを作成した後、私達はコールバック関数を見ました.このコールバック関数の実現方法はどうなりますか?net.createServer = function(callback){
// socket
var socket = new Socket();
callback && callback(socket);
};
上記の関数を呼び出した時にパラメータが入ってきました.このパラメータも関数です.そして、他の方法で構成されているパイプラインを受け入れました.彼の役割はデータのインタラクションです.第一節では、pipeはCientとServerの挨拶が必要です.今クライアントがServerに訪問していないなら、このsocketは存在しません.三、クライアントプログラムを書いてサーバと対話する
Socket、つまりパイプがまだ存在しない以上、通信は存在しないはずです.クライアントプログラムを以下に書きます.
// client.js
var net = require("net");
var client = net.connect({port: 8124}, function(){
console.log('client connected');
client.write('world!\r
');
});
client.on('data', function(data) {
console.log(data.toString());
client.end();
});
client.on('end', function() {
console.log('client disconnected');
});
net.connect
名前の通り、サーバーに接続しています.最初のパラメータは対象です.ポートを設定するのは8124です.つまり、サーバーが傍受するポートです.ホームパラメータが設定されていませんので、デフォルトはローカルです.Serverでは、socketはパイプラインの端であり、clientでは、client自体がパイプラインの端であり、複数のクライアント接続Serverであれば、Serverは複数のsocketを新規に作成し、各socketは一つのCientに対応する.データの通信はとても簡単です.まずサーバプログラムを実行します.
node server.js
この時、サーバーが8124ポートを待ち受けています.クライアントプログラムを開きます.node client.js
それでは、両者の間の情報の相互作用が始まります.具体的に彼らはどうやって交流しますか?四、事件に基づく哲学
まず、NodeJSのEventEmitterモジュールについて説明します.このモジュールはイベントセンターです.前に関連した内容を書きました.プロファイル版のEventEmitterを見ることができます.私をつつく.EventEmitterということは、イベントをイベントプールに追加したり、トリガートリガイベントを実行したりすることができます.もちろん、イベントプールからイベントオフを削除することができます.
NETモジュールはEventEmitterを継承していますので、彼が作成した多くのオブジェクトは以下の通りです.
client.on('data', function(data) {
console.log(data.toString());
client.end();
});
このように多くのカスタムイベントを結びつけて、相互作用において情報交換が必要な時にトリガします.上記のコードを持って言えば、clientはdataイベントをバインドしました.このイベントはServerから情報が伝わってきた時に触発されます.彼がやった仕事は先にデータを印刷して、end()はこのパイプを閉じます.JavaScriptはイベントに基づいた言語で、ほとんどの動作はイベントによって駆動されます.これは非同期プログラミングにおいて非常に際立っています.
五、関連APIの列挙
Serverにはlisten関数以外にも多くのインターフェースがあります.
Server.close([callback])
、傍受を停止すると、以前のすべての配管が使えなくなります.Server.maxConnections
、Serverの最大接続数は、この接続数に上限があり(システムに関する)、接続数の最大上限(システム最大接続数を超えない)を自分で設定することもできます.Server.address()
は、listenの後、この関数を通じてサーバの関連情報を取得することができる.// grab a random port.
server.listen(function() {
address = server.address();
console.log("opened server on %j", address);
});
六、まとめ
本来はチャットルームを書こうとしましたが、このような簡単なコードネットワーク上では、いずれもTCPがサーバとクライアントとの相互作用過程に接続されていることを明確にし、深い話題を次回に残すことが目的です.
七、参考資料
作者:
http://nodejs.org/api/net.html
出典:
Barret Lee
この著作権は作者とブログ園に共有されています.転載を歓迎します.しかし、作者の同意なしにこの声明を保留しなければなりません.文章のページの明確な位置で原文の接続を提供します.
カテゴリ:
http://www.cnblogs.com/hustskyking/、
JavaScript
ラベル:
Node、
nodejs