Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MaxListenersExceededWarning:Kemungkinan kebocoran memori EventEmitter terdeteksi. 11 daftar pesan ditambahkan. Gunakan emitter.setMaxListeners() untuk meningkatkan batas

Batas default untuk Emitter Peristiwa adalah 10. Anda dapat meningkatkannya dengan emitter.setMaxListeners. Saran saya adalah untuk tidak mengubahnya kecuali dan sampai diperlukan secara eksplisit, pendengar meningkat karena Anda tidak berhenti berlangganan. Sekarang ke kode Anda.

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) });
      });
    }
  });
};

Sekarang jika kita menganalisis kode di atas maka jika Anda membuka 20 koneksi soket ke server Anda, itu akan berlangganan 20 kali, ini salah. Sekarang jika kebutuhan Anda adalah mendengarkan pesan yang dipublikasikan di Redis di tingkat server dan kemudian memancarkannya di io maka kode Anda harus seperti di bawah ini

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. virtualenv, mysql-python, pip:ada yang tahu caranya?

  2. 10 fakta &tips menarik tentang MySQL

  3. GALAT:Galat 1005:Tidak dapat membuat tabel 'cat10e.recording' (errno:150)

  4. Dump File MySQL 5.6.10

  5. Menggunakan Database Relasional MySQL di Arch Linux