栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

节点js-连接池的http.request()问题

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

节点js-连接池的http.request()问题

您必须消耗响应。

记住,在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()
在第一个示例中添加一个,您将看到它以合理的速度进行。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484821.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号