Socket.io 的连接事件太多了,会不会很痛?

Mol*_*llo 2 performance events node.js socket.io

我有一个使用node.js的应用程序,其中多个对象引用了socketio实现。他们每个人都会打开一个on-connection事件,以便将他们的特定事件添加到套接字连接中,如下所示:

this.io.on('connection', function(socket){
        socket.on('subs', function(sub){
            self.processSub(sub); 
        });
        // more events  
    });
Run Code Online (Sandbox Code Playgroud)

我有 10 个这样的对象,这个想法是继续使用这种架构添加模块。

我的问题是:

是否socket.io是专为这种用法?它是否可以认真考虑性能?

一如既往,感谢您的时间;)

jfr*_*d00 5

eventEmitters(套接字是)专为这种用途而设计,因此独立模块都可以添加自己的事件侦听器,从而保持独立于其他侦听器,但都可以访问公共事件。这是一个很好且有效的用法。事件侦听器的开销只不过是一个数组条目,其中包含处理程序引用,然后是调用该处理程序的函数调用。

如果您要为同一个事件设置数千个侦听器,那么您可能想知道这样做对性能的影响(只是因为会调用多少函数),但除此之外,这就是它们的作用专为。如果您的数量远少于此数(您说的是 10),那么您完全没问题。