实现实时更新通知功能

时间:2012-11-09 11:12:58

标签: ruby

我想在我的应用中为状态待定的项目实现各个部分的视觉指示器,类似于facebook的/ google加未读通知指示符...我已经编写了一个API来获取要显示的计数,但每次添加或删除项目时我都会坚持更新它,我可以想到两种我不满意的方法,

  • 每当{{p>
  • 第一个正在进行与计数相关的API调用时{{p>
  • 执行1}}或POST操作
  • 第二个是在一段时间后刷新页面...

    我认为应该有更好的方法从服务器端,任何建议或任何宝石这样做吗?

  • 1 个答案:

    答案 0 :(得分:1)

    即使在gmail中,它也会根据客户端请求进行刷新。服务器计算新项目的数量,客户端发起请求(可能使用AJAX)。这需要几乎可以忽略不计的数据和处理时间,因此您可能会侥幸逃脱。如果自上次请求后没有数据发生变化,各种缓存宝石甚至可以存储刷新页面的部分,这甚至可以解决仅在某些内容发生变化时计算的问题。

    更新:

    您可以通过两种方式解决问题:服务器端推送和客户端查询。由于各种原因,推送是有问题的,至少据我所知,在网络环境中很少使用。大多数页面(如果不是全部)使用定时查询来刷新此类信息。您可以使用正确的工具进行检查,例如firefox的firebug。您可以看到针对服务器发起的各个请求。

    当您通过AJAX触发请求时,服务器会回复您。通常它会生成一个页面片段来用旧的内容替换旧内容,但是一些缓存机制可以进行干预,如果没有任何更改,您可能会获得先前存储的缓存片段。查看一些tutorial here,了解各种宝石,其中一个可能符合您的需求。

    如果您更喜欢完整的解决方案,请查看Faye(tutorial here)。我没有用它,但值得一试,看起来很简单。