2

我是 node.js 初学者。尝试创建简单的聊天应用程序,但有问题。当页面快速刷新 10 次以上时,我有警告:

(节点)警告:检测到可能的 EventEmitter 内存泄漏。增加了 11 位听众。使用emitter.setMaxListeners() 增加限制。

当我禁用 socket.io 时,此警告消失。所以,socket.io 有问题。如何增加 socket.io 的最大侦听器?或者也许是另一种解决方案?

代码:

var http = require('http')
fs = require('fs');

var server = http.createServer(function(req, response) {
    req.setMaxListeners(0);
    var pathname = __dirname + '/index.html'

    fs.readFile(pathname, "binary", function(err, file) {
        if (err) {
            response.writeHead(500, {'Content-Type': 'text/plain'});
            response.end(err);
        } else {
            response.writeHead(200, {'Content-Type': 'text/html'});
            response.write(file, "binary");
            response.end();
       }
    });
});

io = require('socket.io').listen(server);
server.listen(4567);
4

2 回答 2

0

我无法重现该问题,但试试这个:

io.setMaxListeners(0);
于 2013-04-17T10:28:24.373 回答
0

在代码顶部尝试此操作以增加全局发射器限制

require('events').EventEmitter.prototype._maxListeners = 100;

于 2021-07-19T17:14:25.563 回答