2

なぜこのような単純な 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

1 分ほどすると、次のように返されます。

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モジュールを使用して) 問題の回避策がありますが、組み込みの http 要求を使用できない理由を知りたいです。バグがあるか、信頼性が低いですか?(Node.js バージョン 0.8.21)

4

1 に答える 1

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' }
于 2013-03-04T15:50:09.087 に答える