ruby-on-rails - 使用 Rails 和 Flex 的首选方式是什么?

标签 ruby-on-rails ruby apache-flex push

我想创建一个类似于聊天应用程序(实时应用程序)的服务。

从我的研究中可以看出,BlazeDS 是首选方式,但它涉及 Java 和 Java EE。此外,最新的 Ruby 结果似乎是 2009-2010 年的结果,因此它们可能已过时。

是否有任何积极维护的 Ruby/Rails 解决方案用于将推送通知与 Flex 集成?

最佳答案

现状

必须使用 Flex 吗? HTML5 websockets是一项新兴但不断发展的技术,现在已经有了实现。 Flex 的日子屈指可数了。然而,websockets 在 IE 中还没有原生支持。

  • em-websocket是一个基于 eventmachine 的 ruby​​ websocket 服务器。服务Pusher以此为基础。
  • Faye是一个 websocket 服务器和客户端。 ( Railscast )
  • 还有其他 Ruby 实现,例如 CrampSocky .
  • 如果您对采用其他技术(例如 Node)的服务器持开放态度,那么有许多 Ruby 或 Javascript 客户端可供使用。

更新:我可能会提到我前段时间研究过用 Flex 做一些类似的事情,并得到了 Flex on Rails 的副本。 .本书的server push example使用 Juggernaut ,不幸的是有 stopped further development .作者指出 Server-Sent Events (SSE) 使 Juggernaut 变得多余。所有主流浏览器 except IE原生支持它们,类似于 situation with websockets .

有垫片(“polyfills”)使用javascript带来these missing capabilities给浏览器。例如,jQuery Graceful WebSocket是一个实现 websocket 客户端但回落到 AJAX 轮询的 jQuery 插件,因此该功能仍然可以在 IE 中运行,只是不会那么即时。因为它检测到 websocket 支持,所以只要浏览器支持 websocket,它们就会被使用。

弥合差距

我们似乎正处于过渡期,我们正处于 Flash 的日落时代,但尚未对其替代技术提供广泛支持。有一个图书馆可以弥补这一差距:Socket.IO .该库在运行时选择最有能力的技术传输。它将使用 Flash(如果存在),但也可以使用 websockets、AJAX 长轮询、AJAX 多部分流、“forever iframe”(如有必要)。这为它提供了广泛的浏览器支持:

  • IE 5.5+
  • Safari 3+
  • 谷歌浏览器 4+
  • 火狐 3+
  • Opera 10.61+
  • iPhone 浏览器
  • iPad 浏览器
  • Android 网络工具包
  • WebOS Webkit

这实际上比单独的 Flash/Flex 或 WebSockets 具有更广泛的兼容性。 Socket.IO 是用 Javascript 为服务器和客户端实现的,因此您需要一个服务器端 Javascript 运行时,例如 Node。

可能的解决方案

虽然目前似乎没有很多人提到 Rails 3 -> Flex 解决方案(如您所见),但 Ruby/Rails 和 Socket.IO 的组合似乎有一些吸引力。

如果您想使用 Socket.IO 向 Rails 应用程序添加聊天功能,Liam Kaufman 有一篇很好的引用博客文章,他使用 Socket.IO 在 Rails 3 中创建了一个聊天应用程序:http://liamkaufman.com/blog/2012/02/25/adding_real-time_to_rails_with_socket.IO_nodejs_and_backbonejs_with_demo/

还有一个 socket.io gem这增加了对上述 Cramp 服务器的支持。

对于其他使用 Rails 3 和 Socket.IO 组合的人,似乎还有其他 stackoverflow 问题。

TL;DR 总结

虽然没有太多迹象表明人们不再从 Rails 直接到 Flex,但还有其他解决方案,其中最有前途的是 Rails 和 Socket.IO 的组合。

关于ruby-on-rails - 使用 Rails 和 Flex 的首选方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12146188/

相关文章:

ruby-on-rails - 有哪些方法可以减少新的 ruby​​ on rails 自动生成的应用程序的体积?

apache-flex - 弹性 : How do you validate 2 password fields to make sure they match?

css - 填充属性不适用于 SVG

ruby-on-rails - Ruby on Rails 对象保存为空值

ruby-on-rails - 测试在新实例上调用方法的函数的 "right"方法是什么?

ruby-on-rails - Rails - request.env ['HTTP_X_FORWARDED_FOR' ] 和 request.remote_ip 之间的区别

java - IntelliJ Idea 11 Flex 编译问题

apache-flex - 如何将flex与mysql连接?

ruby-on-rails - 基于路径的 Multi-Tenancy RoR 应用程序 URL 路由

ruby-on-rails - Heroku 301 重定向