我正在尝试了解 websokects 在服务器端的工作原理。 正如我从这里的答案中得到的,主要是下一种情况:
- 浏览器连接到服务器
- 服务器与用户建立双工持久连接
- 服务器为此用户运行代码实例
- 这一切都会对其他用户重复
所以问题是:
服务器可以在1个进程中处理所有用户吗?不将它们分开,所以有些喜欢全局过程。
谢谢。
最佳答案
这高度依赖于服务器。
一些示例服务器实现/技术:(显然不是完整列表)
- 每个 WebSocket 连接一个进程
- 每个 WebSocket 连接一个线程
- 一个线程管理许多n个Websocket连接
- 所有 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/