ruby-on-rails - 如何实时检索更新的记录? (推送通知?)

标签 ruby-on-rails ajax comet heroku node.js

我正在尝试创建一个 ruby​​ on rails 电子商务应用程序,潜在客户将能够在其中下订单,而店主将能够实时接收订单。 最终确定的订单将被记录到数据库中(目前是 SQLite),店主将打开一个浏览器窗口,新订单将在订单最终确定后立即出现。 (应用信息:我正在使用 HOBO rails 框架,并计划在 Heroku 中托管该应用)

我现在正在考虑实现这一点的最佳技术,因为该应用程序预计会有大量用户发送大量订单:

1) 每个浏览器窗口每隔 X 分钟刷新一次页面,不断轮询服务器以获取新记录(新订单)。当然,这会给服务器带来沉重的负担。

2) 同上,但使用某种 AJAX 框架轮询服务器。

3) 使用某种服务器推送技术,例如“comet”异步消息传递。找到 Juggernaut,唯一的问题是它使用 Flash 和自定义端口,这可能是个问题,因为我的应用程序应该可以在公司防火墙和 NAT 后面访问。

4) 我也在检查 node.js 框架,似乎对这种异步消息传递很有效,尽管 Heroku 不支持它。

实现这种功能最有效的方法是什么?是否还有其他我没有想到的方法?

感谢您的宝贵时间和帮助!

最佳答案

Node.js 可能是一个不错的选择 - 它速度快,喜欢实时并且有很好的 cometd 支持。唯一的缺点是您正在将另一种技术引入您的解决方案。用 rails 和 sinatra 进行编程非常有趣,很多库都受到了启发。

我知道 heroku 已经运行了一段时间的 node.js beta,人们在最近的 nodeknockout 比赛中使用它。 See this blog post .如果那不是一个选项,您绝对可以将其托管在其他地方。如果您将它托管在 heroku 上,您也许可以代理请求。否则,您可以愉快地在子域之外运行它,以便您可以共享 cookie。

也结帐 socket.io .它可以根据浏览器的功能选择最佳的 comet 方式。

要在 node 和 rails 之间共享数据,您可以共享 cookie,然后将 session 数据存储在两个应用程序都可以访问的数据库中。更复杂的架构可能涉及使用 Redis 在它们之间发布消息。或者您可以在 http 请求中传递所需的一切内容。

关于ruby-on-rails - 如何实时检索更新的记录? (推送通知?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3618875/

相关文章:

ruby-on-rails - 如何在 Azure AD 上使用 SSO 设置 RoR 应用程序

ruby-on-rails - 字母替换的更好选择

rest - 如果允许永久请求(服务器推送),则是 API RESTful

ruby-on-rails - 如何将 Bootstrap 按钮放入 haml/html 文件中

ruby-on-rails - FactoryGirl 通过调用另一个工厂的方法来定义属性

php - 如何从一个php文件中的不同数据表中绘制多个googlechart?

javascript - backbone.js + jquery-mockjax : fetch success handler doesn't work

jquery - 使用 jQuery ajax 发出两个请求的基本身份验证

java - 如何将 Comet 与 Spring MVC 一起使用?

java - Tomcat 7 CometProcessor 上缺少 cometd 事件