从Rails应用向客户端推送数据

8
我正在开发一个基于Rails的应用程序,主要通过API暴露给各种移动客户端(iOS、Android等)。该应用程序涉及用户通过API调用将数据提交到服务器,但我想包括将这些数据推送到其他客户端的功能。总体概念类似于消息应用程序,我从客户端向服务器提交消息,接收者从服务器获得被推送的消息。
目前我知道的唯一方法是不断轮询服务器,但一定有更好的技术解决方案。你有什么想法呢?
4个回答

4

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

Pusher是一个托管的API,可快速、轻松和安全地向Web和移动应用程序添加可扩展的实时功能。

如果您需要自助托管解决方案,则应查看slanger gem https://github.com/stevegraham/slanger,它是pusher客户端库的服务器实现。当您感到需要托管解决方案时,只需更改URL即可。

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


谢谢,我正在寻找一个自托管的解决方案,因为这个项目主要是基于我需要开发我的知识。 - Jack

4
我建议在页面中使用websocket来推送更新。您可以使用Faye实现此功能,它可以回退到长轮询和其他解决方案,以支持不支持websocket的浏览器。Faye具有纯Ruby实现,因此您可能可以访问模型层。
另外,这是一个将Faye与Rails结合使用的项目。虽然比较新,但可能符合您的需求。Faye-Rails

2

1

我更喜欢使用事件机制而不是其他任何解决方案。虽然相对于Faye来说有些复杂,但你可以使用事件机制编写更为复杂的代码。

你可能想要查看this关于事件机制的Peepcode屏幕录像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接