我试图了解websokects在服务器端的工作方式。正如我从这里的答案中得到的那样,主要是下一个案例:
- 浏览器连接到服务器
- 服务器与用户建立双工持久连接
- 服务器为此用户运行代码实例
- 这一切都对其他用户重复
所以问题是:
服务器可以在一个进程中处理所有用户吗?而不将它们分开,所以有些喜欢全局进程。
谢谢。
这是高度依赖服务器的。
一些示例服务器实现/技术:(显然不是完整列表)
- 每个 websocket 连接一个进程
- 每个 websocket 连接一个线程
- 一个线程管理多个 n 个 websocket 连接
- 所有 Websocket 连接的共享线程池。(根据需要拉入和使用线程。 如果连接处于空闲状态,则线程将返回到池中。
您将看到每个实现的权衡。
由于 websocket 不是一种请求>响应方法,因此很难说一种方法比另一种方法更好。 您想了解您计划如何使用 websocket 以了解哪种方法是最好的。
关于这个问题的一些想法:(高度基于意见)
- 您的服务器端是否会进行繁重的处理?(选择技术 1、2 或 3)
- 您的服务器端会很健谈吗?(选择 3 或 4)
- 您是否要有 1 个中央 websocket 服务器实例,与许多客户端(如聊天服务器)通信?(选择 3 或 4)
- 或者您是否将为每个用户自定义交互式更新?(如股票市场活动提要)(选择 1、2 或 4)
- 想要支持数万个(如果不是数十万个)同时连接?(选择 3 或 4)
- 您最大的限制是什么? 记忆?中央处理器?网络带宽?