Node.js简单的http请求不起作用

时间:2013-03-04 15:06:16

标签: node.js http

我想知道为什么这样simple http request无效...

http = require("http")

url = "http://nodejs.org/"

console.log "Try a request to #{url}..."
reqHttp = http.request url, (response) ->

    console.log "Request to #{url}"
    response.on 'data', (chunk) -> console.log "chunk: ", chunk 

reqHttp.on 'error', (error) -> console.log "reqHttp error", error

大约一分钟后它会返回:

reqHttp error { [Error: socket hang up] code: 'ECONNRESET' }

为了确保它不是我环境中的问题,我尝试了request模块并且工作得很好:

request = require("request")

url = "http://nodejs.org/"

request url, (error, response, body) ->
  console.log body if not error and response.statusCode is 200

似乎I'm not the only one

所以,我有一个针对我的问题的解决方法(使用request模块),但我想知道为什么我不能使用buind-in http请求。它有缺陷还是不可靠? (Node.js版本0.8.21)

1 个答案:

答案 0 :(得分:7)

好的,这很简单。您正在构建http request但未完成发送。从您给出的链接:

req.write('data\n');   //Write some data into request
req.write('data\n');
req.end();             //Finish sending request let request go. Please do this

由于你从未使用过req.end(),因为它永远不会完成而挂起。节点重置非活动请求

reqHttp error { [Error: socket hang up] code: 'ECONNRESET' }