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

Dav*_*Sb. 2 http node.js

我想知道为什么这么简单的http请求不起作用......

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
Run Code Online (Sandbox Code Playgroud)

大约一分钟后它返回:

reqHttp error { [Error: socket hang up] code: 'ECONNRESET' }
Run Code Online (Sandbox Code Playgroud)

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

request = require("request")

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

request url, (error, response, body) ->
  console.log body if not error and response.statusCode is 200
Run Code Online (Sandbox Code Playgroud)

看来我不是唯一一个.

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

use*_*109 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
Run Code Online (Sandbox Code Playgroud)

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

reqHttp error { [Error: socket hang up] code: 'ECONNRESET' }
Run Code Online (Sandbox Code Playgroud)