【问题标题】:Ajax chat polling bandwidth efficiencyAjax 聊天轮询带宽效率
【发布时间】:2009-10-16 11:15:51
【问题描述】:

我编写了一个小型 Web 应用程序,它基本上是浏览器中的 JQuery 支持的聊天客户端,为了获取我正在使用 AJAX 请求轮询服务器然后附加任何新回复的帖子,我担心这在不失去实时感的同时尽可能高效。

http://darklightweb.co.uk/RealTime/

我看不到任何可能发生中断的方式,因此我每 5 秒轮询一次页面,如果没有可用的新帖子以保持数据传输处于空闲状态,则该页面不返回任何内容,如果它确实有消息顶部队列中的消息被发送出去,我会在 Ajax 请求完成后再次检查,直到消息队列为空。

关于使这个尽可能低带宽或可能的替代实现的任何其他提示?

【问题讨论】:

    标签: jquery ajax asp-classic bandwidth


    【解决方案1】:

    轮询可能不是实现聊天的最佳解决方案 - 我建议查看 COMETJQuery's implementation,它保持与客户端的开放连接并从服务器“关闭”推送更新,并且也是quite scalable.

    【讨论】:

    • 在您输入自己的答案时,是否有人知道 Stack Overflow 是否使用轮询来查找更新,例如“添加了 2 个新答案 - 单击此处显示它们”?还是它使用某种“推”系统,比如彗星?
    【解决方案2】:

    我认为您可以使用聊天应用程序

    Reverse Ajax

    反向 Ajax 指的是 Ajax 设计 使用长寿命 HTTP 的模式 连接以实现低延迟 网络服务器和网络服务器之间的通信 浏览器。基本上这是一种方式 从客户端向服务器发送数据和 一种推送服务器数据的机制 回到浏览器。1

    此服务器-客户端通信需要 两种形式之一:

    * Client polling, the client repetitively queries (polls) the
    

    服务器并等待答复。 * 服务器推送,保持服务器和客户端之间的连接 打开,服务器发送数据时 可用。

    反向 Ajax 描述了 实施这些中的任何一个 模型,或两者的组合。这 设计模式也称为 Ajax 推送、全双工 Ajax 和流式传输 阿贾克斯。

    moo-comet

    Request.Comet 是一个简单的 javascript 类,可以轻松创建跨浏览器 Comet(Reverse Ajax) 应用程序。它提供客户端和服务器之间的实时数据传输,并且可以与任何服务器端语言一起使用。

    【讨论】:

    • 还有一个用于 JQuery 的反向 ajax (Comet) 实现,因此使用 moo-comet 可能不如 Baxter 使用 JQuery 方便(请参阅我的链接答案)
    • 谢谢,很好的答案,但我更愿意坚持使用一个 JS 框架。
    【解决方案3】:

    当不同的雇主使用严格的网络过滤时,我编写了几乎完全相同的应用程序来促进工作中朋友之间的交流。

    我发现为这些轮询请求传输的数据量很少,很少接近每个登录用户 1kb/s,通常要少得多,因为您只轮询 5 秒。

    带宽真的是个问题还是您过早地优化?

    【讨论】:

    • "你过早优化了吗?"该死的。
    【解决方案4】:

    如果您决定不使用 COMET 方法,那么我会像您一样做,除非队列包含多条消息,那么它们会同时发送。这样,您只需每 5 秒准确轮询一次,不会更多(也不会更少)。当然,如果有 100 人连接,这仍然会导致每秒 20 个请求,因此您应该尝试优化服务器端,使每个请求占用尽可能少的服务器资源(CPU/RAM/时间)。缓存是您的朋友。

    不过我不担心带宽问题,因为聊天消息通常很短,而且您的请求也很少。

    【讨论】:

      【解决方案5】:

      根据 msparer 的回复,这里有一篇关于 Comet 消息率和针对聊天应用程序对此类技术进行基准测试的博文:

      http://cometdaily.com/2008/10/30/comet-apps-will-not-scale-equally/

      【讨论】:

        猜你喜欢
        • 2010-09-07
        • 1970-01-01
        • 2011-02-27
        • 1970-01-01
        • 1970-01-01
        • 2015-03-05
        • 2013-08-14
        • 2011-07-15
        • 2013-03-28
        相关资源
        最近更新 更多