1. ホーム
  2. javascript

Node.jsのネットでpipe()を使う

2023-09-24 19:43:49

質問

私は、このような場合 pipe 関数を理解するのに苦労しています。 ネット モジュールのいくつかの例で示されています。

var net = require('net');

var server = net.createServer(function (socket) {
  socket.write('Echo server\r\n');
  socket.pipe(socket);
});

これがどのように機能し、なぜ必要なのか、どなたか説明をお願いします。

どのように解決するのですか?

この pipe() 関数は、読み込み可能なストリームからデータが利用可能になった時点でデータを読み込み、書き込み可能なストリームにデータを書き込みます。

ドキュメントの例では、受信したものを送信する echo サーバーとなっています。その socket オブジェクトは読み込みと書き込みが可能なストリームインターフェイスを実装しているため、受信したデータをすべてソケットに書き戻しています。

これは pipe() メソッドをイベントリスナーで使用するのと同じです。

var net = require('net');
net.createServer(function (socket) {
  socket.write('Echo server\r\n');
  socket.on('data', function(chunk) {
    socket.write(chunk);
  });
  socket.on('end', socket.end);
});