process - websockets 服务器是否总是为每个用户运行进程?

标签 process websocket server-side

我正在尝试了解 websokects 在服务器端的工作原理。 正如我从这里的答案中得到的,主要是下一种情况:

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

所以问题是:

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

谢谢。

最佳答案

这高度依赖于服务器。

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

  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)
  • 您最大的限制是什么?内存?中央处理器?网络带宽?

关于process - websockets 服务器是否总是为每个用户运行进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19329552/

相关文章:

process - 找出候选组任务的最佳方法是什么?

javascript - 在 nodejs 上启动新进程

linux - 如何从/proc 目录中读取所有后台进程?

android - Android WebView 中的 WebSocket

json - Node.js - 何时将 HTML 转义为 JSON 数据、服务器端还是客户端?

Haskell - 使用从 createProcess 和 CreatePipe 创建的句柄通过管道传输到 StdStream

java - 从 JUnit 测试自连接到 Websocket Spring 服务器

javascript - Socket.IO 命名空间,调用未定义的函数 .of()

php - 在 php 中处理 excel 文件

asp.net - 动态向 'GridView' 添加超链接列(服务器端)