什么是使用Rails和Flex的首选方式?

Geo*_*Geo 1 ruby apache-flex push ruby-on-rails

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

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

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

Mar*_*mas 7

目前的情况

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

  • em-websocket是一个基于eventmachine的ruby websocket服务器.Pusher服务基于它.
  • Faye是一个websocket服务器和客户端.(Railscast)
  • 还有其他Ruby实现,如CrampSocky.
  • 如果您对其他技术(如Node)中的服务器开放,那么很多Ruby或Javascript客户端都可以使用.

更新:我可能会提到我曾经尝试过与Flex类似的东西,并获得了Flex on Rails的副本.这本书的服务器推送示例使用了Juggernaut,不幸的是,它停止了进一步的开发.作者指出,服务器发送事件(SSE)使Juggernaut变得多余.除了IE之外的所有主流浏览器本身支持它们,类似于websockets情况.

有垫片(" polyfill ")使用javascript将这些缺失的功能带到浏览器.例如,jQuery Graceful WebSocket是一个实现websocket客户端的jQuery插件,但是回退到AJAX轮询,因此功能仍然可以在IE中运行,只是不会那么即时.因为它检测到websocket支持,所以只要浏览器支持websockets,就会使用它们.

缩小差距

我们似乎陷入了一个过渡时期,我们处于Flash的日落时代,但尚未获得对其替代技术的广泛支持.有一个库可以弥补差距:Socket.IO.该库在运行时选择功能最强大的技术传输.如果存在,它将使用Flash,但也可以使用websockets,AJAX长轮询,AJAX多部分流,必要时使用"永远iframe".这为浏览器提供了广泛的支持:

  • IE 5.5+
  • Safari 3+
  • 谷歌Chrome 4+
  • Firefox 3+
  • Opera 10.61+
  • iPhone Safari
  • iPad Safari
  • Android Webkit
  • WebOS Webkit

这实际上比单独的Flash/Flex或WebSocket更广泛的兼容性.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服务器的支持.

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

TL; DR摘要

虽然没有太多迹象表明人们正在从Rails直接进行Flex,但还有其他最有希望的解决方案是Rails和Socket.IO的组合.

  • 我认为这个答案比他的问题的实际答案要好得多,这个答案是"不". (2认同)