Node.js "EventEmitter Speicher-Leck erkannt"

meinen nackten Knochen Node.js app sieht wie folgt aus (im wesentlichen ich einen Webdienst aufrufen, jeder so oft, und schieben Sie die Daten an die clients) Nach einem Tag oder so, bekomme ich den Fehler unter laufen, sogar nach dem hinzufügen emitter.setMaxListeners(0). Ich bin mir ziemlich sicher, dass mein code keine Speicherverluste. Irgendwelche Ratschläge?

/*
* Server setup
*/
var querystring = require('querystring');
var xml2js = require('xml2js');
var parser = new xml2js.Parser();
var eyes = require('eyes');
var http = require('http');
var app = http.createServer(handler);
var io  = require('socket.io').listen(app);
var emitter = new (require('events').EventEmitter);
emitter.setMaxListeners(0);
io.set('log level', 0);

app.listen(8080);


function handler(req, res){
    res.writeHead(200, {'Content-Type':'text/html'});
    res.end('Test');
}

/*
* Global data object
*/
var xmlData= '';
var cache = [];

/*
* web service info
*/
var postData = querystring.stringify({  
    'index' : '',
    'type' : '-1',
}); 


var options = {
    host: 'localhost',
    path: '/WebService.asmx',
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',  
        'Content-Length': postData.length 
    }
};



var getData = function(){

    //Web Service Request Obj
    var webServiceReq = http.request(options, function(res) {  

      res.setEncoding('utf8');  

      res.on('data', function (chunk) {  
        xmlData += chunk;
      }).on('end', function() {

        parser.parseString(xmlData, function(err, data){
                cache = JSON.parse(data['#']);
        });

        io.sockets.emit('message', { "data": cache});

      });//end res.on('end')

    });  


    webServiceReq.write(postData);
    webServiceReq.end();
}

//grab the info every 10 seconds
setInterval(getData, 5000);

//emit the latest data when client initially connects
io.sockets.on('connection', function (socket) {
    //emit the data
    socket.emit('message', {"data": cache});
});

Den Fehler:

(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
    at Parser.EventEmitter.addListener (events.js:168:15)
    at Parser.exports.Parser.Parser.parseString (C:\WebApplications\WebApp\scripts\node_modules\xml2js\lib\xml2js.js:197:14)
    at Parser.__bind [as parseString] (C:\WebApplications\WebApp\scripts\node_modules\xml2js\lib\xml2js.js:6:61)
    at IncomingMessage.getData (C:\WebApplications\WebApp\scripts\nodeService.js:87:20)
    at IncomingMessage.EventEmitter.emit (events.js:115:20)
    at IncomingMessage._emitEnd (http.js:366:10)
    at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
    at Socket.socketOnData [as ondata] (http.js:1356:20)
    at TCP.onread (net.js:410:27)
InformationsquelleAutor victormejia | 2012-08-27
Schreibe einen Kommentar