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