2010-11-17 29 views
1

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

回答

5

您可以使用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兼容的服务器。

+0

@Darin目前HTML5 Web Sockets最棘手的部分不是浏览器,而是寻找支持服务器和软件套件。 – Matt 2010-11-17 18:02:04

+0

谢谢......所以这是做到这一点的标准方法吗?实施某种缓存以防止无数次访问数据库会更好吗?或者是过度杀戮? – Prabhu 2010-11-17 18:02:41

+0

@Matt,这是正确的。我见过一些很棒的Python实现。 – 2010-11-17 18:02:55

1

如果答案是肯定的(有新东西),您可以向您的服务器发出AJAX调用请求更新,您可以向用户显示建议或仅更新所需的页面内容。

关于。

升级:how-to实现类似的行为

0

在今天的浏览器没有长轮询(又名COMET)的支持(这应该,但是,很快就会改变,与HTML5),我是轮询服务器的每n秒,使用AJAX请求并发送最新的可见条目/项目/ tweet /时间步。然后后端计算新项目的数量并将其返回给浏览器。