gpt4 book ai didi

node.js - socket.io 房间或命名空间?

转载 作者:IT老高 更新时间:2023-10-28 21:46:14 26 4
gpt4 key购买 nike

我正在调查 nodejs/socket.io 的实时聊天,我需要一些关于实现房间的建议。

哪个更好,使用命名空间或使用房间功能将聊天群完全隔离开来?

房间和命名空间之间真正的技术区别是什么?

资源使用有区别吗?

最佳答案

这是命名空间和房间的共同点(socket.io v0.9.8 - 请注意 v1.0 涉及完全重写,因此情况可能已经改变):

  • 命名空间 (io.of('/nsp')) 和房间 (socket.join('room'))都是在服务器端创建的
  • 多个命名空间和多个房间共享同一个 (WebSocket) 连接
  • 服务器将仅通过线路将消息传输到那些连接/加入 nsp/房间的客户端,即它不仅仅是客户端过滤

区别:

  • 客户端使用 io.connect(urlAndNsp) 连接命名空间(仅当客户端已存在于服务器上时,客户端才会添加到该命名空间)
  • 房间只能在服务器端加入(尽管在服务器端创建 API 以使客户端加入很简单)
  • 命名空间可以是 authorization protected
  • 授权不适用于房间,但可以将自定义授权添加到上述服务器上易于创建的 API,以防一心想要使用房间
  • 房间是命名空间的一部分(默认为“全局”命名空间)
  • 命名空间始终 Root 于全局范围

为了不将概念与名称(房间或命名空间)混淆,我将使用 compartment 来指代概念,而其他两个名称用于 实现的概念。所以如果你

  • 需要按分区授权,命名空间可能是最简单的途径
  • 如果您想要分层分层的隔间(最多 2 层),请使用命名空间/房间组合
  • 如果您的客户端应用包含不同的部分(它们本身并不关心隔间,但)需要彼此分开,请使用命名空间。

后者的一个例子是一个大型客户端应用程序,其中不同的模块,可能是单独开发的(例如第三方),每个单独使用 socket.io,在同一个应用程序中使用并希望共享一个网络连接.

实际上并没有对此进行基准测试,在我看来,如果您只需要在项目中使用简单的隔间来分隔和分组消息,任何一个都可以。

不确定这是否能回答你的问题,但得出这个答案的研究至少让我看得更清楚。

关于node.js - socket.io 房间或命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10930286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com