2012-04-19 17 views
0

httpリクエストを送信するための標準コードがあります。 http.globalAgentを使用しています。私は少し後に要求を送信した場合、しかし、ノードで複数のHTTPリクエストを送信する処理方法は?

['{'code':'ECONNRESET'}'] 

は、私は私のmaxSocketsは2500

そして、私は一度に複数のリクエストを送信する場合、その後、私はこのエラーを取得すること設定します各要求の間のタイムアウトは、それは動作します。

ので、ご質問は以下のとおりです。

1)ECONNRESETが本当に何を意味するのでしょうか?なぜこのエラーが発生するのですか?

2)エラーを発生させずに即座に複数のリクエストを送信するにはどうすればよいですか?


元のコードは、複数の要求を送信する:

// I'm using Seq() 
Seq(). 
seq(function() { 
    this(null, ['p1','p2','p3','p4','p5']); 
}) 
.flatten(false) 
.parEach(fuctnion(data) { 
    // send out request 
    sendRemoteRequest(data); // a function that uses http.request 
}) 
.seq(function(data) { 
    console.log("done"); 
}) 

答えて

3

ECONNRESETは、基本的にリモート・サーバが接続を閉じたことを意味します。私はそれが特定の数の同時接続を許可していると仮定し、その制限に達すると接続が落ち、プログラム内でECONNRESETという結果になります。

+0

これはリモートサーバーに依存するので、私はそれについて何もできません。しかし、一般的に、複数のHTTP要求を処理する最良の方法は何ですか?あなたが指摘したように、ほとんどのサーバーには一定の制限があります。だから、多くのリクエストの場合、私はちょうど1つ1つを完了する必要がありますか?またはより良い戦略? :) – murvinlai

+1

はい、リモートサーバー(またはファイアウォール/プロキシ)によって異なります。制限を下回ることを除いて、あなたができることはたくさんありません(1つ1つが最も安全な方法です)。私はおそらく1から10同時接続でそれを試してみると、失敗した場合はそれを下げます。 – stewe

+0

ありがとうございます。 :) – murvinlai