获取请求模块的错误

我正在查询到mtgox服务器。 这里是API https://en.bitcoin.it/wiki/MtGox/API/HTTP/v1 。 我的代码成功地击中了服务器,但几次后这个错误popup:

events.js:115 listeners[i].apply(this, args); ^ TypeError: Cannot call method 'apply' of undefined at EncryptedStream.EventEmitter.emit (events.js:115:20) at SecurePair.destroy (tls.js:896:22) at process.startup.processNextTick.process._tickCallback (node.js:244:9) 

我很确定这不是来自API调用限制。

//以下函数以美元返回一般的股票信息。 这包括高,低和音量…

 exports.market_data = function(req, res, next){ console.log("test"); options = { uri: 'http://mtgox.com/api/1/BTCUSD/ticker', headers: { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/555.55 (KHTML, like Gecko) Chrome/55.5.5555.55 Safari/555.55' } }; try { request(options, function (err, response, body) { // console.log(body); APIResponder.respond(res, response); }); } catch(err) { console.log(err); console.log("Gangnam style"); throw err; } }; 

对不起,互联网死了。 这里是查询MTGox的代码。 希望这可以帮助。

我不知道你的请求函数是什么,但是如果它是http.request的一个快捷方式,你应该记住响应以大块的forms到达。 您不知道是否可以以响应获取块的速度写入res ,以便您的APIResponder.respond应该将响应传递给res:res.pipe(响应),也可以手动处理:

 response.on('data',function(data){ var flushed = res.write(data); if(!flushed) response.pause(); }) res.on('drain',function(){ response.resume(); })