我想创建一个类似于聊天应用程序(实时应用程序)的服务。
从我的研究中可以看出,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 实现,例如 Cramp和 Socky .
- 如果您对采用其他技术(例如 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/