一尘不染

在Node.js网络中使用pipe()

node.js

我很难pipe理解net模块的几个Node.js示例中显示的功能。

var net = require('net');

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

任何人都可以提供有关其工作原理以及为什么需要这样做的解释吗?


阅读 697

收藏
2020-07-07

共1个答案

一尘不染

pipe()功能从可读流中读取可用的数据,并将其写入目标可写流。

文档中的示例是回显服务器,它是发送接收到的信息的服务器。该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);
});
2020-07-07