4

我正在尝试了解 websokects 在服务器端的工作方式。正如我从这里的答案中得到的那样,主要是下一个案例:

  1. 浏览器连接到服务器
  2. 服务器与用户建立双工持久连接
  3. 服务器为此用户运行代码实例
  4. 这一切都对其他用户重复

所以问题是:

服务器可以在 1 个进程中处理所有用户吗?没有将它们分开,所以有些喜欢全局过程。

谢谢你。

4

1 回答 1

6

这是高度依赖服务器的。

一些示例服务器实现/技术:(显然不是完整列表)

  1. 每个 websocket 连接一个进程
  2. 每个 websocket 连接一个线程
  3. 一个线程管理许多n 个websocket 连接
  4. 所有 websocket 连接的共享线程池。(根据需要拉入和使用线程。如果连接空闲,则将线程返回到池中。)

您将看到每个实现的权衡。

由于 websocket 不是请求 -> 响应方法,因此很难说一种方法比另一种更好。您想了解您计划如何使用 websockets 以了解哪种方法是最好的。

关于这个主题的一些想法:( 高度基于意见)

  • 您的服务器端会进行繁重的处理吗?(选择技术 1、2 或 3)
  • 你的服务器端会很健谈吗?(选择 3 或 4)
  • 您是否将拥有 1 个中央 websocket 服务器实例,与许多客户端(如聊天服务器)交谈?(选择 3 或 4)
  • 还是您要为每个用户定制交互式更新?(如股市活动提要)(选择 1、2 或 4)
  • 想要支持数十(如果不是数百)数千个同时连接?(选择 3 或 4)
  • 你最大的限制是什么?记忆?中央处理器?网络带宽?
于 2013-10-12T02:25:49.383 回答