networking - websocket 可以耗尽网络服务器的连接池吗

标签 networking websocket architecture system-design

我看到很多人写过 Ajax(polling) vs websocket。我还没有看到有人在下面提到 websocket 的缺点。

正如我们所知,对于每个 http 请求,网络服务器都需要连接。网络服务器可以支持的并发连接数是最大的,如果有请求到来,请求将不得不等到任何连接都收费。

在简单的 http 请求(基于轮询)的情况下,当一个请求由服务器连接放入池中并且该连接可用于下一个请求时,因此在简单的 http 请求中不太可能,请求将是等待连接。

但是在 websocket 中,连接永远不会放回 web 服务器的池中,因此下一个请求将不得不一直等待连接的情况非常频繁。

所以,我想知道,我的想法是正确的还是遗漏了什么。我是对的,这是如何解决的?这个问题曾经发生过吗?

最佳答案

浏览器可以通过使用 Connection: Keep-Alive header 来合并 HTTP 连接,然后将它们重新用于对同一主机的进一步请求。

但是 WebSockets 不是关于请求的,它的连接不是共享的。您连接到 WebSocket 服务器,然后在您的代码中控制通信。就这样。如果你想要另一个连接,那么你应该创建它。

此外,来自池的现有 HTTP 连接可以是 upgraded到 WebSocket 连接。

关于networking - websocket 可以耗尽网络服务器的连接池吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44982814/

相关文章:

node.js - 如何通过 Nodejs WebSocket 连接到 RouterOS?

node.js:将 websockets 代理到其他端口

c# - Switch 语句的替代方法

asp.net-mvc - 在 Multi-Tenancy 应用程序中使用多个数据库架构

go - 是否有扩展 ipv6 地址的内置功能?

Elasticsearch - 从不在服务器 LAN 上的设备收集日志

javascript - 是否有通过 websockets 管理资源的既定模式?

swift - 模式 : Singletons vs. 静态变量和方法方法

ios - 使用 sendAsynchronousRequest :queue:completionHandler: 时显示 'data loading'

python - 在Python中获取DNS搜索后缀