我在我的解析器中声明了4个订阅。以下是其中一个例子:
IMAdded: {
subscribe: withFilter(
() => pubsub.asyncIterator(IM_ADDED_CHANNEL),
(IMAdded, args) => {
if (typeof(IMAdded) == 'undefined') {
return false;
}
const userId = IMAdded.context.userId;
if ((userId !== args.fromID) && (userId !== args.toID)) {
console.log('unauthorized access');
return false;
}
let result = false;
IMAdded = IMAdded.IMAdded;
result = ((IMAdded.fromID === args.fromID && IMAdded.toID === args.toID) || (IMAdded.fromID === args.toID && IMAdded.toID === args.fromID));
return result;
}
)
}
在我的本地开发系统上,我只有2个用户登录。到目前为止,他们每个人都在一个订阅频道上调用subscribeToMore。两者都订阅了相同的订阅频道。
我在服务器上收到此控制台错误:
MaxListenersExceededWarning:可能的EventEmitter内存泄漏 检测。添加了11个IMAdded监听器。使用 emitter.setMaxListeners()增加限制
如果我使用:
const pubsub = new PubSub();
pubsub.ee.setMaxListeners(30);
...它达到最大值30并在那里抛出错误。
什么可能宣布超过30名听众?我甚至不知道它是客户端还是服务器上的东西。
感谢所有人提出任何意见/建议。