Nic*_*ons 66 javascript tcp node.js
我无法绕过net模块的pipe
几个Node.js示例中显示的函数.
var net = require('net');
var server = net.createServer(function (socket) {
socket.write('Echo server\r\n');
socket.pipe(socket);
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释这是如何工作的以及为什么需要它?
hex*_*ide 94
该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);
});
Run Code Online (Sandbox Code Playgroud)
pipe()
从可读流读取并写入可写流,很像 Unix 管道。它一路上做所有“合理”的事情,包括错误、文件结尾、如果一侧落后等。你的特定示例有点令人困惑,因为socket
它既可读又可写。
一个更容易理解的例子是在这个 SO 问题中,你从一个 http 请求中读取并写入一个 http 响应。