Facebook风格自动加载

时间:2013-06-10 13:47:08

标签: ajax ruby-on-rails-3

我们正在http://reader.pykih.com开发免费的开源Google阅读器替代方案,代码位于http://github.com/pykih/reader

当用户注册或添加RSS源时,我们将源URL添加到数据库,然后让DelayedJob从该RSS URL获取文章。这通常需要几秒到一两分钟,具体取决于DelayedJob队列。许多用户抱怨说,实际上正在获取RSS源时根本没有获取RSS源。用户所要做的就是刷新他自己的页面。我们在那里写了一条消息,但是用户在抱怨。

任何人都可以指出我们的方向 - 设计Facebook或Google风格的最佳方式是“加载”(黄色图标)功能,一旦加载它会自动将条目添加到屏幕而不刷新页面。

提前谢谢

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您基本上想要在页面仍处于打开状态时实时更新用户的页面视图。 (无论如何,这就是Facebook和大多数Google产品现在所做的事情)。这种技术通常称为服务器推送 - 信息从服务器推送到客户端,而不是从服务器请求客户端请求(拉)信息。

有多种方法可以实现服务器推送。

  • 您可以使用AJAX每十秒左右“重新加载”一次页面。这很容易实现,但根本不是实时的,并且可能导致服务器上不必要的负载。它适用于所有浏览器。
  • 您可以使用EventSource,这是Firefox,Chrome,Safari,Opera和其他人(但不是IE)支持的相对较新的格式。这是一种非常简单的格式easy to implement。 EventSource只是单向通信:它将事件从服务器发送到客户端,而不是相反。
  • 您可以使用WebSockets,可能使用像EventMachine和WebSocket library这样的库。 WebSockets允许快速双向通信,但它比EventSource和only the newest IE versions support it更复杂。
  • 您可以使用Pusher等商业服务。 Pusher易于集成且速度快,但不是免费的。但浏览器兼容性很好。

选项的不同主要在于客户端支持的数量(您需要IE支持吗?)以及您获得的Ruby集成量。