我正在尝试获取websokects在服务器端的工作方式。
正如我从这里的答案中得到的,大多数情况是下一种情况:


浏览器连接到服务器
服务器与用户建立双工持久连接
服务器为此用户运行代码实例
所有其他用户都会重复这些操作


所以问题是:

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

谢谢。

最佳答案

这高度依赖服务器。

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


每个websocket连接一个过程
每个websocket连接一个线程
一个线程管理多个N WebSocket连接
所有websocket连接的共享线程池。
(根据需要拉入并使用线程。
如果连接空闲,则线程返回到池中。)


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

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

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


您的服务器端将要进行大量处理吗? (选择技术1、2或3)
您的服务器端会说话吗? (选择3或4)
您是否将要有1个中央Websocket服务器实例,与许多客户端(例如聊天服务器)对话? (选择3或4)
还是要为每个用户定制交互式更新? (例如股市活动Feed)(选择1、2或4)
是否要支持数以万计(如果不是数百个)的同时连接? (选择3或4)
您最大的限制是什么?记忆?中央处理器?网络带宽?

09-30 16:14
查看更多