【问题标题】:Real-time updates like TwitterTwitter 等实时更新
【发布时间】:2010-11-17 17:54:21
【问题描述】:

您如何像 Twitter 那样实现实时更新(“自从您开始搜索以来,还有 423 条推文”)?我需要至少每 10 秒刷新一次页面。我正在使用 ASP.NET MVC 和 jquery。

【问题讨论】:

    标签: c# .net asp.net jquery asp.net-mvc


    【解决方案1】:

    您可以使用setInterval javascript 函数,该函数允许您使用 AJAX 定期轮询服务器以获取更新:

    window.setInterval(function() {
        // This will be executed each 5s
        // TODO: query your server for updates probably using AJAX
        // example with jquery:
        $.getJSON('/arethereanyupdates', function(data) {
            if (data.isupdates) {
                alert('yeap there are updates');
            }
        });
    }, 5000);
    

    HTML5 中还有一个名为 WebSockets 的推送技术,它允许服务器通知客户端更新,但当然您需要一个兼容 HTML5 的浏览器,现在不难找到和一个兼容 WebSocket API 的服务器。

    【讨论】:

    • @Darin 如今 HTML5 Web Sockets 的棘手部分与其说是浏览器,不如说是寻找支持服务器和软件套件。
    • 谢谢...这是执行此操作的标准方法吗?实施某种缓存以防止对数据库的大量命中会更好吗?还是那是过度杀戮?
    • @Matt,没错。我见过一些很棒的 Python 实现。
    • @Prabhu,如果您使用缓存,您将不知道数据库是否有更新 :-) 缓存应该完成,但要使用适当的过期策略。
    • @Matt,我不喜欢,因为我没有足够的经验。只是对我有用的东西。
    【解决方案2】:

    您可以对您的服务器进行 AJAX 调用以请求更新,如果答案是肯定的(有新事物),您可以显示一个 javascript 窗口来建议用户或只更新您需要的页面内容。

    问候。

    更新:这个how-to 实现了类似的行为

    【讨论】:

      【解决方案3】:

      在当今的浏览器不支持长轮询(又名 COMET)的情况下(不过,这应该很快就会改变,使用 HTML5),我使用 AJAX 请求每 n 秒轮询一次服务器并发送最新的时间步长可见条目/项目/推文/任何东西。然后后端统计较新项目的数量并将其返回给浏览器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-06
        • 2016-07-08
        • 2016-10-16
        • 1970-01-01
        相关资源
        最近更新 更多