套接字挂起错误与多个http.get请求

我正在使用node.js使用http.get请求和async.eachLimit方法下载大量文件。

当我增加5以上的asynchronous方法的并发性,这个“套接字挂断”错误很容易出现,我不明白为什么。

任何人都可以照亮为什么发生这种情况?

这是收到的错误

events.js:72 throw er; // Unhandled 'error' event ^ Error: socket hang up at createHangUpError (http.js:1472:15) at Socket.socketOnEnd [as onend] (http.js:1568:23) at Socket.g (events.js:180:16) at Socket.EventEmitter.emit (events.js:117:20) at _stream_readable.js:920:16 at process._tickCallback (node.js:415:13) 

这里是用async.eachLimit方法重复调用的函数

  var urlPre = "http://api.steampowered.com/IEconItems_440/GetPlayerItems/v0001/?key="; var urlSidPre = "&steamid="; var urlInvSuf = "&inventory=yes"; var URL = urlPre+steam_API+urlSidPre+sid+urlInvSuf; //log.info("Downloading "+ alias + "'s inventory"); http.get(URL, function (res) { var body = ''; res.on('data', function (data) { body+=data; fs.appendFile(invLoc, data); }); res.on('end', function() { try { inventory = JSON.parse(body); //log.info(alias + "'s inventory downloaded"); } catch (e) { fs.unlinkSync(invLoc); log.error("parsing " + alias+"'s inventory"); loadInventory(sid, alias, invFolder, callback); return; } callback(inventory, alias); }); res.on('error', function (e, socket) { log.error(alias + " inventory error") }) }) 

我认为你的问题和这些人一样:

https://github.com/ether/etherpad-lite/issues/1541

尝试添加一个侦听器到套接字的error event

 http.get(...) .on('error', function(e) { console.log("Got error: " + e.message); });