套接字挂在http.request到Node.js MongoDb服务器

在我的本地PC上,我设置了一个Node.js代理服务器,它向一个node.js RESTful MongoDb服务器发出请求,一个是端口8080,另一个是端口3000上的代理。我可以在RESTful服务器日志中看到,所有查询被正确地发送回代理,但代理挂起抛出这个错误:

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) 

这是我build立我的代理请求:

  var proxy = function(req, res, next) { try { var options = mapRequest(req); var dbReq = http.request(options, function(dbRes) { var data = ""; res.headers = dbRes.headers; dbRes.setEncoding('utf8'); dbRes.on('data', function(chunk) { data = data + chunk; }); dbRes.on('end', function() { res.header('Content-Type', 'application/json'); res.statusCode = dbRes.statusCode; res.httpVersion = dbRes.httpVersion; res.trailers = dbRes.trailers; res.send(data); res.end(); }); }); dbReq.end(JSON.stringify(req.body)); } catch (error) { console.log('ERROR: ', error.stack); res.json(error); res.end(); } }; 

这些是发送给MongoDB服务器的选项:

  { "hostname":"127.0.0.1", "path":"//databases/db1/collections/documents?apiKey=134557676&l=5&sk=0", "method":"GET", "port":"8080", "headers":{ "host":"127.0.0.1", "connection":"keep-alive", "accept":"application/json, text/plain ", "x-xsrf-token":"VPDlgN2iMWU2IXPIPH0aiwS5", "user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36", "dnt":"1", "referer":"http://localhost:3000/documents", "accept-encoding":"gzip,deflate,sdch", "accept-language":"it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4", "cookie":"XSRF-TOKEN=VPDlgN2iMWU2IXPIPH0aiwS5; connect.sess=s%3Aj%3A%7B%22passport%22%3A%7B%22user%22%3A%225298bfa9e4b070e1c60fd84f%22%7D%2C%22_csrf%22%3A%22VPDlgN2iMWU2IXPIPH0aiwS5%22%7D.wc85bNSpJIl7KnCHOUXiG5V2e7SI9XR9EctByTtqhu4" } } 

我find了一个用http.request()replacehttp.request()的解决scheme,显然http.get()挂断了,因为socket在超时期限内没有发送连接结束事件。 类似的问题在这里: NodeJS – “套接字挂断”实际上是什么意思?