0

在便士拍卖网站上,随着时间的推移会发生一些基本请求,即:

  • 投标请求(当有人投标时)
  • 定时器更新
  • 主要投标人更新

我试图更好地理解长轮询,但我坚持这一点。据我所知,长轮询可以减少 Ajax 请求。即只有一个用于视觉更新,一个用于操作。因此,因此:

  1. 投标请求(投标)将保持原样,但所有视觉更新请求将合并为一个“长轮询”请求,对吗?
  2. 如果用户第一次连接到该站点,他将通过同时传递他最后一次被告知的页面状态来请求页面的当前状态。服务器会将它与它应该是什么状态进行比较,如果它们不同,它将把新状态传回给用户,对吗?
  3. 将状态传回时,LONG POLL 将有效停止,屏幕将更新,并启动新的 LONG POLL,对吗?

到目前为止,这种理解正确吗?

如果是这样,如果服务器仍然需要比较状态,这将如何以任何方式减少对后端的请求数量?

如果页面由一个用户在 50 个不同的窗口中打开,这将有何帮助?

4

1 回答 1

1

长轮询用于模拟服务器将数据推送到客户端的连接(而不是实际发生的情况 - 客户端从服务器请求信息)。基本上,客户端从服务器请求数据,但不是立即将数据返回给客户端,而是服务器“保持”请求打开 - 然后它可以在稍后的时间点将数据返回给客户端 - 这可用于模拟服务器更新客户“实时”。

因此,在您的拍卖网站示例中,客户端可能会长时间轮询服务器以获取项目出价金额 - 服务器将保持此请求处于打开状态,并且当该项目的出价值发生变化时,可以将更新后的金额返回给客户端..这个可用于给出服务器在投标金额变化时更新客户端的印象。

就对服务器的请求而言,这在很大程度上取决于它是如何实现的。显然,与让客户端每秒发出一个新的“标准”请求以检查更新相比,使用长轮询将减少对服务器的请求数量。客户端的多个实例仍然会导致对服务器的多个请求 - 此外,服务器仍然必须处理保持长轮询请求打开并在适当时响应这些请求的开销。显然不同的服务器和服务器架构,处理这比其他人更有效。

于 2013-02-08T11:40:29.007 回答