使用下载管理器取消下载时Nodejs内存泄漏

时间:2013-03-13 17:04:19

标签: node.js memory-leaks express download listener

我使用Expressjs 3和Nodejs 0.10

创建了一个简单的文件下载器
function download(req, res, filepath, filename){
    res.header('Content-Type', 'application/force-download');
    res.header('Content-Type', 'application/octet-stream');
    res.attachment(filename);
    res.download(filepath, filename);
}

一切正常,但是当我使用下载管理器(例如Internet Download Manager)测试应用程序时,当我中止或取消下载时(在下载之前或期间),它会发出警告:

Trace
    at Socket.EventEmitter.addListener (events.js:160:15)
    at Socket.Readable.on (_stream_readable.js:653:33)
    at Socket.EventEmitter.once (events.js:179:8)
    at TCP.onread (net.js:512:26)

(node) warning: <b>possible EventEmitter memory leak detected. 11 listeners added. Use
emitter.setMaxListeners() to increase limit.</b>

如何在中止文件下载后删除侦听器?

1 个答案:

答案 0 :(得分:0)

问题解决了 在Expressjs定义之后添加 setMaxListeners(0)

var express = require('express');

//expressjs 2.x
//var app = module.exports = express.createServer();

//expressjs 3.x
var app = module.exports = express();

//ADD BELOW CODE
app.setMaxListeners(0);


感谢@robertklep