記事ディレクトリ
序文
前回の記事でnode.jsのhttpモジュールを紹介し、node.jsを介して簡単なサーバーを構築する方法を紹介しましたが、実際には、httpはnetモジュールに基づいてカプセル化されており、最下層はnetモジュールを使用しています。通信: TCP/IP プロトコルとソケット。
nodejs commonjs の紹介
nodejs fs モジュールの紹介
nodejs path モジュールの紹介
nodejs イベント モジュールの紹介
nodejs http モジュールの紹介
net は、サーバーの作成とクライアントのシミュレートの両方を行うことができます
httpモジュールと同じように、次のことができますhttp.createServer()再度リクエストできますhttp.request()
サービス端末
var net = require("net");
const PORT = 3000;
const HOST = "127.0.0.1";
const netServer = net.createServer(function (socket) {
// 当服务器端收到客户端发的数据时触发
socket.on("data", function (data) {
console.log(`服务器收到来自客户端的数据${
data}`);
// ....处理完数据后,需要给客户端返回些什么
socket.write("数据收到,已经处理");
});
socket.on("close", function () {
console.log("服务端:客户端已经断开连接");
});
});
netServer.listen(PORT, HOST, function () {
console.log("服务器启动,开始监听来自客户端的请求");
});
クライアント
var net = require("net");
const PORT = 3000;
const HOST = "127.0.0.1";
// 客户端开始连接服务器,如果服务器未开或者不存在会报错
const socket = net.createConnection(PORT, HOST, function(){
console.log('客户端连接服务器')
});
// 客户端开始与服务端建立连接并成功时触发
socket.on('connect',function(){
console.log('建立连接成功')
})
//客户端收到来自服务器的数据时触发
socket.on('data',function(data){
console.log(`客户端收到来自服务端的:${
data}`)
})
// 客户端主动断开与服务器端的连接时触发 socket.end()
socket.on('close',function(data){
console.log('客户端:我要断开连接')
})
// 客户端向着服务端发送信息
socket.write('客户端:hello,服务端')
// 客户端向服务端发信息,并结束连接
socket.end('客户端:服务器再见')
サーバ
服务器启动,开始监听来自客户端的请求
服务器收到来自客户端的数据客户端:hello,服务端 客户端:服务器再见
务务端:客户端已经断开连接
クライアント
客户端连接服务器
建立连接成功
客户端收到来自服务端的:数据收到,已经处理
客户端:我要断开连接
サーバーのリッスン/接続/クローズ/エラーで一般的に使用されるイベント
リスニング: リスニング リクエストが正式に開始されたときにトリガーされる server.listen() を呼び出します。
connection: 新しいリクエストが入ったときにトリガーされます。パラメータはリクエストに関連するソケットです。
close: サーバーが閉じられたときにトリガーされます。
error: すでに占有されているポートをリッスンするなど、サービス エラーが発生したときにトリガーされます。
var net = require("net");
const PORT = 3000;
const HOST = "127.0.0.1";
const netServer = net.createServer(function (socket) {
...
});
netServer.on('listening', ...)
netServer.on('connection', ...)
netServer.on('close', ...)
netServer.on('error', ...)
ソケット共通イベントのクローズ/接続/データ/終了/エラー
// 客户端开始连接服务器,如果服务器未开或者不存在会报错
const socket = net.createConnection(PORT, HOST, function(){
console.log('客户端连接服务器')
});
// 客户端开始与服务端建立连接并成功时触发
socket.on('connect',function(){
console.log('建立连接成功')
})
//客户端收到来自服务器的数据时触发
socket.on('data',function(data){
console.log(`客户端收到来自服务端的:${
data}`)
})
// socket报错或者结束时触发
socket.on('close',function(data){
console.log('客户端:我要断开连接')
})
// 当 socket 的另一端发送一个 FIN 包的时候触发,从而结束 socket 的可读端。
socket.on('end',function(){
console.log('服务器端断开了连接')
})
// 当错误发生时触发。'close' 事件也会紧接着该事件被触发。
socket.on('error',function(){
console.log('出错了')
})
ソケットのプロパティと API
接続関連
-
socket.connect(): シナリオごとに 3 つの異なるパラメーターがあります。
-
socket.setTimeout(): 接続タイムアウトを設定するために使用されます。
-
socket.setKeepAlive(): 長い接続をセットアップするために使用されます。
-
socket.destroy()、socket.destroyed: エラーが発生すると、ソケットを破棄して、このソケットで他の IO 操作が行われないようにするために使用されます。
データの読み書き関連
- socket.write(data[, encoding][, callback]) ソケットでデータを送信します。2 番目のパラメーターは、文字列のエンコーディングを指定します。デフォルトは UTF8 エンコーディングです。
- socket.end([data][, encoding]) ソケットを半分閉じます。たとえば、FIN パケットを送信します。サーバーは引き続きデータを送信できます。
- socket.pause() は、データの読み取りと書き込みを一時停止します。つまり、 ['data'][] はトリガーされなくなります。アップロードのスロットリングに使用できます。
- socket.resume() は、[socket.pause()][] を呼び出した後、データの読み取りを再開します。
- socket.setEncoding() エンコーディングを読み取り可能なストリーム ([Readable Stream][]) として設定します。詳細については、[stream.setEncoding()][] を参照してください。
データ属性関連
- socket.bufferSize このプロパティは、現在書き込まれようとしているバッファリングされた文字の数を示します. 値が大きすぎると、輻輳が発生する可能性があります. 大量のバッファサイズを処理したり、継続的に増加させたりすることに慣れているユーザーは、使用に注意する必要があります. [socket.pause()][ ] と [socket.resume()][] は、プログラム内のデータの流れを抑制します。
- socket.bytesRead 受信したバイト数。
- socket.bytesWritten 送信されたバイト数。
住所関連
-
ソケット.アドレス()
-
socket.remoteAddress、socket.remoteFamily、socket.remotePort
-
socket.localAddress/socket.localPort
nodejsの他のコンテンツの紹介
nodejs commonjs の紹介
nodejs fs モジュールの紹介
nodejs path モジュールの紹介
nodejs イベント モジュールの紹介
nodejs http モジュールの紹介