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 बार सदस्यता लेगा, यहां यह गलत हो रहा है। अब यदि आपकी आवश्यकता सर्वर स्तर पर रेडिस पर प्रकाशित संदेश को सुनना है और फिर इसे उत्सर्जित करना है 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 वर्कबेंच का उपयोग करके एक MySQL डेटाबेस को रिवर्स इंजीनियरिंग करें

  2. MySQL में टेबल इंजन बदलना

  3. MySQL गिनती और समूह दिन के अनुसार

  4. पायथन कर्सर का उपयोग करके संग्रहीत कार्यविधि से परिणाम नहीं लौटा सकता

  5. क्या मैं ऑनलाइन लोगों की संख्या निर्धारित करने के लिए सत्रों की गणना कर सकता हूं?