我相信我有两个真正不同的选择(我不确定两者都行得通;我是新手):
假设我有两个希望 socket.io 处理的模块:模块 A 和模块 B。假设这是两个不同的聊天室。我什至不想要动态数量的聊天室(因为这限制了我的选择,而且我的问题并不是关于多功能性)。假设这是一个静态数量的聊天室。
选项1:
在客户端会话开始时,客户端通过发送事件socket.emit('registerA', {});
或类似的东西将自己标识为聊天室 A 或聊天室 B 的成员。然后,在服务器端,我可以有类似的东西io.sockets.on('registerA', handleA);
,其中 handleA 将是一个函数,它在每个单独的套接字进入时直接将侦听器添加到它。这将允许同名的多个事件(例如,方法 'post ' 可以以与聊天室 B 相同的方式发送给聊天室 A,但听者会因为它的注册方式而有所不同)。
选项 2:
具有适用于所有套接字的单独事件处理程序。这意味着套接字根本不必注册自己。根据聊天室的不同,“post”之类的动作可能是“Apost”或“Bpost”,它们可以单独处理。
在效率方面,哪个选项更好?