我正在研究nodejs / socket.io进行实时聊天,并且需要一些有关实施会议室的建议。
使用名称空间或使用房间功能来完全隔离颤抖的对方,哪个更好?
房间和名称空间之间真正的技术区别是什么?
资源使用方面有区别吗?
我正在研究nodejs / socket.io进行实时聊天,并且需要一些有关实施会议室的建议。
使用名称空间或使用房间功能来完全隔离颤抖的对方,哪个更好?
房间和名称空间之间真正的技术区别是什么?
资源使用方面有区别吗?
这是一个古老的问题,但是在对该主题进行了一些研究之后,我发现在一个重要的点上尚不清楚接受的答案。根据Guillermo Rauch本人(请参阅链接):尽管理论上可以在正在运行的应用程序上动态创建名称空间,但是您主要将它们用作应用程序的预定义独立部分。另一方面,如果您需要即时创建临时隔间以容纳用户/连接组,则最好使用房间。
命名空间允许您创建具有相同名称的对象,但是它们将是分开的,因为它们将位于不同的命名空间中,否则称为作用域。
这与Socket.IO名称空间应具有的思维过程相同。如果要构建模块化的Node Web应用程序,则需要对不同的模块进行命名空间。如果回头看我们的命名空间代码,您将看到我们能够在不同的命名空间中侦听相同的确切事件。在Socket.IO中,默认连接上的连接事件和/ xxx名称空间上的连接事件是不同的。例如,如果您的站点上有一个聊天和评论系统,并且希望两者都是实时的,则可以为每个空间命名。这使您可以构建仅存在于其自身上下文中的整个Socket.IO应用程序。
如果您要构建要打包和安装的东西,这也将是正确的。您无法知道某人是否已经在默认名称空间中使用某些事件,因此您应该创建自己的事件并在其中侦听。这样一来,您就不会再踩任何使用您的软件包的开发人员的脚步了。
命名空间使我们能够将连接扩展到不同的上下文中。我们可以将其与房间进行比较,从而可以将连接分组在一起。然后,我们也可以将相同的连接加入其他房间。
命名空间使您可以创建供Socket.IO使用的不同上下文。房间使您可以在这些上下文内对客户端连接进行分组。
房间和名称空间可分割通信并将单个套接字分组。
广播到房间或命名空间将不会仅覆盖成员。
命名空间和房间之间的区别如下:
区别主要在于谁来管理
要决定使用什么,必须决定是在前端还是在后端管理细分