【问题标题】:Warning : occur node apn emitter.setMaxListeners()警告:发生节点 apnemitter.setMaxListeners()
【发布时间】:2017-05-11 05:32:54
【问题描述】:

我使用节点 apn 发送推送通知。

emitter.setMaxListeners() 出现关于向 10,000 个用户发送推送的问题。

但在 1000 个用户上发送推送不会出现问题。

如何解决这个问题。

警告信息:

(node:17804) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 wakeup listeners added. Use emitter.setMaxListeners() to increase limit

代码

const server = new Hapi.Server();
server.connection({port: 3000});
...
server.register([{
...
}], (err) => {
    if (err) {
        throw err;
    }

    server.start((err) => {
        if (err) {
            throw err;
        }
        console.log(`Server running at : ${server.info.uri}`);
    });
});

server.route({
    method: 'POST',
    path: '/push',
    handler: function(request, reply) {
        ...
        var notification = new apn.Notification() ;
        notification.badge = count ;
        notification.sound = "default" ;
        notification.alert = message ;
        notification.topic = toping ;
        ...
        //here tokens 10,000 counts
        apn_sender.send(notification, tokens).then((result) => {

            var res = {
                success : result.sent.length,
                failed : result.failed.length
            } ;

            return reply(res) ;

        }) ;
        ...
    }
});

【问题讨论】:

    标签: node.js eventemitter node-apn


    【解决方案1】:

    尝试将setMaxListeners设置为,

    process.setMaxListeners(0);
    

    当为特定事件添加超过 10 个侦听器时,EventEmitters 倾向于打印警告(默认情况下)。这使我们能够帮助发现内存泄漏。但是,并非所有事件都应仅限于 10 个侦听器。 emitter.setMaxListeners() 方法允许为这个特定的 EventEmitter 实例修改限制。该值可以设置为 Infinity(或 0)以指示无限数量的侦听器。

    希望这会有所帮助!

    【讨论】:

    • 能否请您更新您的帖子,并在您拥有emitter 声明的位置(如const emitter = new EventEmitter())更新您的完整代码?
    • 我没有声明“发射器”。所以如果我在处理程序中声明“发射器”并使用emitter.setMaxListeners()?
    • 是的。请在您的代码中添加const emitter = new EventEmitter();emitter.setMaxListeners(0);
    • 你确定吗? emitter.setMaxListeners(0) 将添加无限监听器
    【解决方案2】:

    您是否使用以下方法关闭了与 APNs 提供商的连接,

    apnProvider.shutdown();
    

    发送通知完成后。

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      • 2021-09-19
      • 2017-01-08
      • 2021-06-02
      相关资源
      最近更新 更多