Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MaxListariesExceededWarning:Đã phát hiện rò rỉ bộ nhớ EventEmitter có thể xảy ra. 11 câu trả lời lis đã được thêm vào. Sử dụng emitter.setMaxListaries () để tăng giới hạn

Giới hạn mặc định cho Trình phát sự kiện là 10. Bạn có thể tăng nó bằng emitter.setMaxListaries. Đề xuất của tôi là không thay đổi nó trừ khi và cho đến khi được yêu cầu rõ ràng, người nghe sẽ tăng lên vì bạn đã không hủy đăng ký. Bây giờ đến mã của bạn.

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

Bây giờ nếu chúng ta phân tích đoạn mã trên thì nếu bạn mở 20 kết nối socket đến máy chủ của bạn, nó sẽ đăng ký 20 lần, đây là lỗi. Bây giờ nếu yêu cầu của bạn là lắng nghe thông báo được xuất bản trên Redis ở cấp máy chủ và sau đó phát ra nó trên io thì mã của bạn sẽ giống như dưới đây

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. Nó được phát âm là “S-Q-L” hay “Phần tiếp theo”?

  2. Knex.js có ngăn chặn tiêm sql không?

  3. Truyền tên bảng làm tham số của câu lệnh đã chuẩn bị

  4. Chỉ cập nhật Thời gian trong trường DateTime mysql

  5. Cách kiểm tra xem cơ sở dữ liệu mysql có tồn tại hay không