您必须消耗响应。
记住,在v0.10中,我们进入了streams2。这意味着
data直到您开始寻找事件才发生。因此,您可以执行以下 *** 作:
http.createServer(function(req, res) { // this does some I/O, async // in 0.8, you'd lose data chunks, or even the 'end' event! lookUpSessionInDb(req, function(er, session) { if (er) { res.statusCode = 500; res.end("oopsie"); } else { // no data lost req.on('data', handleUpload); // end event didn't fire while we were looking it up req.on('end', function() { res.end('ok, got your stuff'); }); } });});
但是,不读取数据时不会丢失数据的流的另一面是,如果您不读取数据,它们 实际上
不会丢失数据!也就是说,它们开始处于暂停状态,您必须阅读它们才能取出所有内容。
因此,测试中发生的事情是,您发出了一堆请求并且 没有使用响应 ,然后套接字最终被Google杀死,因为什么也没发生,并假设您已经死亡。
在某些情况下, 不可能
使用传入的消息:也就是说,如果您没有
response在请求上添加事件处理程序,或者完全
response在服务器上编写并完成了消息而从未读取请求。在这种情况下,我们只是为您转储垃圾中的数据。
但是,如果您正在听
'response'事件,则有责任处理该对象。
response.resume()在第一个示例中添加一个,您将看到它以合理的速度进行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)