使用Socket.io进行的连接事件过多,是否会受到影响?

时间:2015-08-27 20:46:41

标签: node.js performance events socket.io

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

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

我喜欢其中的10个对象,我们的想法是继续使用这种架构添加模块。

我的问题是:

socket.io 是否专为此类用途而设计?它是否会有严重的性能考虑?

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

1 个答案:

答案 0 :(得分:4)

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

如果你要在同一个事件中有成千上万的监听器,那么你可能会想到这样做的性能影响(仅仅是因为会调用多少函数),但是没有这个,这是他们的目的是什么。如果你的计数少于那个(你说10),那么你就完全没问题了。