Mysql
 sql >> база данни >  >> RDS >> Mysql

MaxListenersExceededWarning:Открит е възможен теч на памет на EventEmitter. Добавени са 11 списъка на съобщенията. Използвайте emitter.setMaxListeners(), за да увеличите лимита

Ограничението по подразбиране за Излъчвател на събития е 10. Можете да го увеличите с emitter.setMaxListeners. Моето предложение е да не го променяте, освен ако и докато не се изисква изрично, слушателите се увеличават, защото не сте се отписали. Сега към вашия код.

const redis = require('redis');
const config = require('../config');
const sub = redis.createClient(config.REDIS.port, config.REDIS.host);
const pub = redis.createClient(config.REDIS.port, config.REDIS.host);

sub.subscribe('spread');

module.exports = (io) => {
  io.on('connection', (socket) => {
    // this callback will be executed for all the socket connections.
    let passport =
      socket.handshake.session.passport; /* To find the User Login  */

    if (typeof passport !== 'undefined') {
      socket.on('typing:send', (data) => {
        pub.publish('spread', JSON.stringify(data));
      });

      // this is where you are subscribing for each and every socket connected to your server
      sub.on('message', (ch, msg) => {
        // this is the Exact line where I am getting this error

        // whereas you are emitting messages on socket manager, not on the socket.
        io.emit(`${JSON.parse(msg).commonID}:receive`, { ...JSON.parse(msg) });
      });
    }
  });
};

Сега, ако анализираме горния код, тогава ако отворите 20 сокетни връзки към вашия сървър, той ще се абонира 20 пъти, тук се обърка. Сега, ако вашето изискване е да слушате съобщението, публикувано на Redis на ниво сървър и след това да го излъчите на io тогава кодът ви трябва да е като по-долу

const redis = require('redis');
const config = require('../config');
const sub = redis.createClient(config.REDIS.port, config.REDIS.host);
const pub = redis.createClient(config.REDIS.port, config.REDIS.host);

sub.subscribe('spread');

module.exports = (io) => {
  sub.on('message', (ch, msg) => {
    // this is the Exact line where I am getting this error
    io.emit(`${JSON.parse(msg).commonID}:receive`, { ...JSON.parse(msg) });
  });

  io.on('connection', (socket) => {
    let passport =
      socket.handshake.session.passport; /* To find the User Login  */

    if (typeof passport !== 'undefined') {
      socket.on('typing:send', (data) => {
        pub.publish('spread', JSON.stringify(data));
      });
    }
  });
};


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е да се вмъкне нов ред в горната част на MySQL таблицата?

  2. Колко реда в една база данни са ТВЪРДЕ МНОГО?

  3. Свързване към Mysql DB с C# - Трябват някои с набори от данни

  4. Разбиране на HAProxy статистиката за MySQL и PostgreSQL

  5. MySQL репликация:Грешни транзакции в GTID базирана репликация