Socket.io 的连接事件过多,会不会很疼?
Too many on-connection events with Socket.io, does it hurt?
我有一个使用 node.js 的应用程序,其中多个对象引用了 socketio 实现。他们每个人都打开一个 on-connection 事件,以便将他们的特定事件添加到套接字连接,如下所示:
this.io.on('connection', function(socket){
socket.on('subs', function(sub){
self.processSub(sub);
});
// more events
});
我有大约 10 个这样的对象,我的想法是继续使用这种架构添加模块。
我的问题是:
socket.io是为这种用途设计的吗?是否可以认真考虑性能?
一如既往,感谢您的宝贵时间 ;)
eventEmitters
(套接字)正是为这种用途而设计的,因此独立模块都可以添加自己的事件侦听器,从而保持独立于其他侦听器,但都可以访问公共事件。这是一个很好且有效的用法。事件侦听器的开销只不过是保存处理程序引用的数组条目,然后是调用该处理程序的函数调用。
如果您要让成千上万的侦听器收听同一个事件,那么您可能想知道这样做对性能的影响(只是因为会调用多少函数),但除此之外,这就是它们的设计目的。如果您的计数远低于此值(您说的是 10),那么您完全没问题。
我有一个使用 node.js 的应用程序,其中多个对象引用了 socketio 实现。他们每个人都打开一个 on-connection 事件,以便将他们的特定事件添加到套接字连接,如下所示:
this.io.on('connection', function(socket){
socket.on('subs', function(sub){
self.processSub(sub);
});
// more events
});
我有大约 10 个这样的对象,我的想法是继续使用这种架构添加模块。
我的问题是:
socket.io是为这种用途设计的吗?是否可以认真考虑性能?
一如既往,感谢您的宝贵时间 ;)
eventEmitters
(套接字)正是为这种用途而设计的,因此独立模块都可以添加自己的事件侦听器,从而保持独立于其他侦听器,但都可以访问公共事件。这是一个很好且有效的用法。事件侦听器的开销只不过是保存处理程序引用的数组条目,然后是调用该处理程序的函数调用。
如果您要让成千上万的侦听器收听同一个事件,那么您可能想知道这样做对性能的影响(只是因为会调用多少函数),但除此之外,这就是它们的设计目的。如果您的计数远低于此值(您说的是 10),那么您完全没问题。