将数据从rails app推送到客户端

时间:2012-01-14 09:54:11

标签: ruby-on-rails push

我正在开发一个主要由api向各种移动客户端(iOS,Android等)公开的rails应用程序。该应用程序涉及用户向服务器提交数据(通过api调用),但我想要包括的是将这些数据推送到其他客户端的能力。一般概念类似于消息传递应用程序,我从客户端向服务器提交消息,接收器从服务器推送消息。

目前我所知道的唯一方法是不断轮询服务器,但必须有比这更好的技术解决方案。有什么想法吗?

4 个答案:

答案 0 :(得分:4)

您应该查看http://www.pusher.com

  

Pusher是一个托管API,可以快速,轻松,安全地为网络和移动应用添加可扩展的实时功能。

如果您需要自托管解决方案,那么您应该查看slanger gem https://github.com/stevegraham/slanger,它是推送客户端库的服务器实现。如果您觉得需要托管解决方案,只需更改URL即可。

  

Slanger是用Ruby编写的Pusher协议的开源服务器实现。它被设计成在N个节点上水平扩展,并且不知道用户连接到哪个Slanger节点,即同一个信道的用户不需要连接到同一个Slanger节点。多个Slanger节点可以位于负载平衡器后面,无需特殊配置。从本质上讲,它的设计非常容易扩展。

答案 1 :(得分:4)

我会在页面中使用websocket来推送更新。

您可以使用Faye实现此功能,这可以回溯到没有支持websocket的浏览器的长轮询和其他解决方法。 Faye有一个纯ruby实现,所以你可能可以访问你的模型层。

编辑:

此外,这是一个将Faye与Rails结合在一起的项目。这是相当新的,但可能会做你想要的。 Faye-Rails

答案 2 :(得分:2)

Ruby拥有自己的事件处理库,像gem一样实现:

https://github.com/eventmachine/eventmachine

也许它会帮助你

答案 3 :(得分:1)

我更喜欢event machine而不是任何其他解决方案。这有点复杂,但你可以使用事件机器编写更复杂的代码。

您可能想在事件计算机上检查this peepcode截屏视频