使用Transform时,第一次可以从socket接收到客户端数据(HTTP请求),等处理并写入socket一些响应数据后,想再次处理客户端数据时,但获取不到任何数据,使用模式: var Transform = require("stream").Transform; var inherits = require("util").inherits; var Request = function() { Transform.call(this); this._transform = function(data) { console.log("recv data length " + data.length); // 这一句只处理了一次 }; }; inherits(Request, Transform);
net.createServer(function(socket) { var req = new Request(); socket.pipe(req).pipe(socket); }); 在浏览器中检查socket使用状态,在发送HTTP请求后,后续数据是发送出去的(数据发送在onopen中),客户端已经发送成功,连接也还在,说明服务器socket已经收到数据了,从Readable的角度看,是监听src的'data'事件,如果Request没有收到数据,是不是可以说src没有触发'data'事件?或者说监听src失效?