提问者:小点点

决定使用简单HTTP请求还是WebSockets


我们正在实现一个服务,它被许多用户在同一时间使用。在高峰时期,我们可以有数万人在线。

我们的服务的关键部分需要重新实现,因此我们试图想出新的方法来实现它。目前,我们基于用户交互发送简单且非常短/小的AJAX HTTP请求:

  • ping:我仍处于活动状态
  • activity:我已经做了,请把它写进数据库
  • 完成:我已完成我的活动,因此关闭我的请求

同时,在某些情况下(十分之一),我们打开了EventSource,从中可以读取服务器上的一些修改。

问题是这个模型是否足够好,还是打开一个WebSocket并通过WebSocket传递一切更好。

  • 优点-对于每个用户,我们将只维护一个连接,而不是发送多个请求。
  • 缺点-当很多人在线时,我们将保持数千个连接处于活动状态

正确实施的决策应该是什么?

值得注意的是,这个问题的答案是相同的:WebSockets协议vs HTTP-但是我要求具体的用例。有关的问题是泛泛地提出来的。


共1个答案

匿名用户

  • 缺点-当很多人在线时,我们将保持数千个连接处于活动状态

您可以实现服务,以便在超时后关闭空闲的websocket连接。这可能与EventSource的工作方式相同,因此不会保留太多活动连接。(类似的性能特征。)

(但是如果您依赖于浏览器提供的EventSource的自动重新连接,那么切换到WebSocket意味着您需要为重新连接的逻辑编写更多的代码。)

通常WebSocket应该具有较少的网络流量开销。但是差别有多大取决于你当前的服务是如何实现的。如果您已经通过AJAX和EventSource优化了逻辑并压榨出了所有性能,那么使用WebSocket可能只是一个微不足道的改进。