2013-06-03 56 views
4

我正在使用这段代码发送一些http请求并获取数据,并且工作正常。我最近更新了Apache和PHP到最新版本,以及节点。Node.js http响应结束事件?

'close'事件停止发射。我也试过'结束'和'完成'这似乎没有任何工作。

我需要知道什么时候响应结束,所以我可以开始处理数据,通常它有几个块。你们能帮忙吗?

var req = http.request(options, function(res) { 
     res.on('data', function (chunk) { 
     if(chunk != null && chunk != "") { 
      dataString += chunk; c 
     } 
     }); 
    }); 

    req.on('close', function() { 
     //tadaa it is finished, so we can process dataString 
    }); 

    req.write(post_data); 
    req.end(); 

当前版本:2.4的Apache,PHP 5.4节点0.10.9

也许有一些Apache特定的配置设置,防止它关闭连接?

P.S.我不认为这是Apache虽然..我试图google.com与相同的结果..很奇怪...任何人都有一个工作代码示例? (加载大数据,并知道何时结束)

+0

如果你做了很多的服务器端请求,你应该考虑使用[request](https://npmjs.org/package/request)包。 – gustavohenke

+0

这可能是[streams2](http://blog.nodejs.org/2012/12/20/streams2/)的问题。尝试添加'req.on('data'...)'或在'req.on('end')'后面调用'req.resume()'。 –

回答

8

您应该等待响应中的end事件,而不是请求。

例如

res.on('end', function() { 
    // now I can process the data 
}); 
+0

这工作谢谢你!我很好奇这可能是如何工作的...但无论如何非常感谢! –

+0

有可能新的Apache有类似连接keepalives的东西,所以它不会在一个请求后关闭连接。 – Joe