【发布时间】:2015-03-19 16:03:19
【问题描述】:
我目前正计划在 NodeJS 中创建一个浏览器游戏。游戏将使用事件进行模块之间的几乎所有通信。
什么性能更好(或有优点或缺点?):
我只使用一个(全局?)EventEmitter。每个模块都可以监听该全局事件流或在全局事件流中发出事件。我会使用更复杂的事件名称,因此当触发事件时,不会调用全局事件流上的所有侦听器。我在一个事件流上拥有大量的侦听器。
示例:Player1 收到一个物品。事件“player1:inventory:item”被触发,并且只有 player1 在全局事件流上监听该事件。
或
它自己的每个模块都扩展了 events.EventEmitter 并仅提供该特定对象的事件。每个 EventEmitter 的监听器数量很少,大多数时候只有一个监听器。
示例:单个玩家有一个任务日志和一个库存。对于每个玩家,我都会创建一个任务日志和库存实例,将它们保存在一个集合(或玩家对象)中。 player1 的 questlog 只监听 player1 的物品栏。
我没有使用 NodeJS 中的 EventEmitter 的经验,只知道由于内存泄漏,一个事件发射器或事件上的侦听器超过 10 个时会发出警告,但我不知道为什么。
我看到这两个系统都有一些优点和缺点,但在技术方面我需要建议。
感谢您的每一个帮助!
【问题讨论】:
标签: javascript node.js performance events