我几乎把问题标题写成——在 eventEmitters 之间进行通信
我有一个全局范围内的 node.js 模块(X)(它使用 eventEmitter)。然后我有每个套接字本地的代码(用户连接)。
现在我在全局变量 G={'X':X} 上携带 X 通过进程,以便套接字可以像这样访问 X:
G.X.on('someEvent',doSomething);
这是愚蠢的!现在,每次我启动我的服务器时,它似乎都运行良好(我收到了事件),但是如果我刷新页面并发出一个事件,我会得到它两次。如果我再次刷新页面,我会收到 3 次事件。
我认为我将侦听器绑定到同一个全局的 eventEmitter。
如何制作一个单独的本地 eventListener 来监听全局 eventEmiter 的发射?
我知道如何设置 eventEmiter:
var events = require('events');
var ee = new events.EventEmitter();
ee.on('someEvent',function(){console.log('hello');});
但它没有捕捉到另一个事件......
我也尝试使用 eventEmitter 复制模块
var ee = G.X;
ee.on('someEvent',function() { console.log('hello'); });
但它仍然接收多个事件。
hello
hello
hello