2012-04-19 118 views
0

我有發送http請求的標準代碼。使用http.globalAgent。如何處理在Node中發送多個http請求?

設置我maxSockets是2500

,然後當我在一次發送多個請求,我得到這個錯誤:

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

但是,如果我派了位之後,將請求每個請求之間的超時,然後它的工作。

所以,問題是:

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請求的最佳方法是什麼?因爲大多數服務器都有一定的限制,正如你所指出的。所以如果有很多要求,我應該一個接一個地完成嗎?還是有更好的策略? :) – murvinlai 2012-04-19 21:32:50

+1

是的,它取決於遠程服務器(或防火牆/代理)。除了保持低於極限(一個接一個將是最安全的方法),你可以做的事情並不多。我會嘗試使用1-10個併發連接,如果失敗,可以降低它。 – stewe 2012-04-19 21:47:22

+0

謝謝你的建議。 :) – murvinlai 2012-04-19 22:26:40