在node.js中,如何将模块的所有事件转发到另一个

Sha*_*baz 8 javascript node.js

假设我正在创建自己的模块,它位于"网络"模块的顶部.我的模块有自己的事件,但也允许客户端侦听tcp连接发出的网络事件:

mymod.on('myevent',...); // my event
mymod.on('connect',...); // net event
mymod.on('end',...);     // net event
Run Code Online (Sandbox Code Playgroud)

现在我正在做以下事情

...
tcp.on('connect',function(){ self.emit('connect');});
tcp.on('end',function(){ self.emit('end');});
...
Run Code Online (Sandbox Code Playgroud)

我是否有更惯用的方式将所有事件(或事件的子集)从一个模块转发到另一个模块的客户端?

我希望这种情况一直都会出现,所以我想以最干净的方式做到这一点.

Bra*_*rad 3

我过去所做的就是处理该newListener事件。在将一个处理程序附加到我的班级之前,我不会费心附加处理程序。然后,当它出现时,我将其附加到基类。

this.on('newListener', function (event, listener) {
    baseClassInstance.on(event, listener);
})
Run Code Online (Sandbox Code Playgroud)

您可以通过首先检查参数来过滤哪些事件被传递event

如果您必须删除侦听器,请小心。在这些情况下,这可能不是最好的解决方案。