我想创建一个类似于聊天应用程序(实时应用程序)的服务。
从我的研究中可以看出,BlazeDS
是首选方式,但它涉及Java和Java EE。此外,最新的Ruby结果似乎是从2009年到2010年,所以它们可能已经过时了。
是否有积极维护的Ruby / Rails解决方案用于将推送通知与Flex集成?
答案 0 :(得分:7)
你有使用Flex吗? HTML5 websockets是一种新兴但不断发展的技术,现在已有实施。 Flex的日子已经屈指可数了。然而,websockets在IE中还没有本机支持。
更新:我可能会提到我一段时间以前与Flex做过类似的事情,并获得了Flex on Rails的副本。该书的server push example使用了Juggernaut,遗憾的是stopped further development。作者指出Server-Sent Events(SSE)使Juggernaut变得多余。所有主要浏览器except IE都原生支持它们,类似于situation with websockets。
有使用javascript将polyfills带到浏览器的填充程序(“these missing capabilities”)。例如,jQuery Graceful WebSocket是一个实现websocket客户端的jQuery插件,但是回退到AJAX轮询,因此功能仍然可以在IE中运行,只是不会那么即时。因为它检测到websocket支持,所以只要浏览器支持websockets,就会使用它们。
我们似乎陷入了一个过渡时期,我们处于Flash的日落时代,但尚未获得对其替代技术的广泛支持。有一个图书馆可以缩小差距:Socket.IO。该库在运行时选择功能最强大的技术传输。它将使用Flash(如果存在),但也可以使用websockets,AJAX长轮询,AJAX多部分流,必要时使用“永久iframe”。这为浏览器提供了广泛的支持:
这实际上比单独的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服务器的支持。
对于其他正在使用Rails 3和Socket.IO组合的人来说,似乎还有其他stackoverflow问题。
虽然没有太多迹象表明人们正在从Rails直接进行Flex,但还有其他最有希望的解决方案是Rails和Socket.IO的组合。
答案 1 :(得分:3)
如果您希望在Ruby世界中生活,可以使用常规WebSockets与Flex应用程序进行通信。它不会很漂亮,但它可以工作,你可以避免Java后端。这比告诉BlazeDS扔掉周围的结构要原始得多,但它应该是可行的。
在Flex客户端,有一个由Kaazing编写的库,它与WebSocket服务器捆绑在一起。下载其中一个WebSocket服务器,在client-libs文件夹中,应该有一个swc(带文档),可以用来与em-websocket(或者实际上,任何websocket技术)交谈。
现在,所有这些,你将不会有BlazeDS或GraniteDS的可扩展性,但它应该适用于较小的实现和演示。
答案 2 :(得分:0)
您可以使用https://github.com/rubyamf/rubyamf或https://github.com/victorcoder/rubyamf_plugin
但是你会遇到实时消息传递问题,因为rubyamf和rubyamf_plugin不支持RTMP。
答案 3 :(得分:0)
您可以使用RestfulX gem& Flex框架。这就是我用于Rails / Flex的内容。