我正在开发一个主要由api向各种移动客户端(iOS,Android等)公开的rails应用程序。该应用程序涉及用户向服务器提交数据(通过api调用),但我想要包括的是将这些数据推送到其他客户端的能力。一般概念类似于消息传递应用程序,我从客户端向服务器提交消息,接收器从服务器推送消息。
目前我所知道的唯一方法是不断轮询服务器,但必须有比这更好的技术解决方案。有什么想法吗?
答案 0 :(得分:4)
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)
答案 3 :(得分:1)
我更喜欢event machine
而不是任何其他解决方案。这有点复杂,但你可以使用事件机器编写更复杂的代码。
您可能想在事件计算机上检查this peepcode截屏视频