1

我正在 Rails 中开发一个应用程序,在该应用程序中,我为用户提供了通过 HTML 表编辑数据库内容的选项。但我想进行这种协作,以便当用户更新任何内容时,其他用户的视图会自动更新。

我正在调用 AJAX 函数来保存/更新数据。

有了这个,我可以使用轮询,客户端将不断询问服务器是否有任何更新。但这将是低效的。

在网上搜索我发现我可以使用网络套接字,为此我可以使用诸如 Pusher、Slanger 之类的库。

但是我没有找到任何关于如何使用这些库来自动更新 HTML 表的信息。

任何建议,将不胜感激。

4

2 回答 2

2

如果您对轮询不感兴趣,那么您可能正在寻找发布/订阅服务器。

我建议检查一下剑圣。它允许客户端浏览器与您的服务器建立不轮询的长时间运行连接:相反,当您的服务器发送推送时,它们会通过将该推送中的 JavaScript 直接渲染到客户端页面来响应。

Juggernaut 的作者有一个名为Holla的示例项目,它几乎完全符合您的要求——也就是说,它订阅了一个服务器,并在从连接中读取时更新客户端所在的页面。Holla 使用它来创建聊天服务,但您可以使用相同的代码来更新表格以供其他用户查看。

于 2012-02-23T15:07:57.680 回答
1

我不使用任何这些,但是对于 pusher.js 的快速 google 似乎,这很容易。在浏览器端,您定义一个事件处理程序。

在服务器端,您可以触发事件并与事件一起发送一些数据(例如创建的记录)。这可以是字符串或哈希。哈希将转换为 JSON。

无论您发送何种数据,您都可以使用任何库(如 jquery 或类似库)在表中创建新行(或生成您需要的任何 html)。在 Rails 上下文中,使用渲染生成 html 字符串而不是 JSON 将允许您使用部分和模板。同样,使用 jquery 将它们插入 DOM 很容易。

甚至还有一个用于 Ruby on Rails 的 gem,它集成了推送器功能。请参阅推送器教程

我想,像 slanger 这样的其他库或多或少会以相同的方式工作。

于 2012-02-23T13:12:52.283 回答