【问题标题】:Long polling on a penny auction site?在便士拍卖网站上进行长时间投票?
【发布时间】:2013-02-08 11:22:36
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: long-polling


    【解决方案1】:

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

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

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

    【讨论】:

    • 但是与服务器同步时间之类的呢?每隔几秒钟,客户就必须知道拍卖时间是多少(就像一分钱拍卖可能会增加等)?
    • 在这种情况下,当服务器发现相关拍卖时间增加时,您可以让服务器更新客户端(通过发送对长轮询请求的响应)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    相关资源
    最近更新 更多