Ruby 如何用 ruby 实现手机推送功能?

mobiwolf · 2012年06月20日 · 最后由 allenwei 回复于 2012年06月25日 · 5090 次阅读

hi,现在有一个需求:

实现一个类似 androidpn 这样的推送,目的是解决手机客户端和服务器之间的数据同步问题。

我现在初步的思考是用 xmpp 协议来实现服务器对客户端的消息的推送,然后客户端收到推送消息之后发起请求连接到服务器上请求需要的数据

或者是:http://mqtt.org 采取这个协议呢?

这样比维护一个在手机和服务器之间长期链接的 socket 来更好一点,省点流量,省点电。

问题:

ruby 有没有这样的现成的东西供参考呢?

刚好最近在做这东西。不过,我这边是用 Java 基于 MQTT 写的。

#1 楼 @yggg 谷歌的 c2dm 在国内的服务是不稳定的。所以,基本上针对安卓都得自己实现一套推送系统

C2DM 基本不考虑了,国内不实用

@weihuilee 为啥不用 ruby 用 java 呢?

匿名 #6 2012年06月20日

#3 楼 @weihuilee 我也没用过 c2dm, 只是知道这种方法

我在用 Juggernaut https://github.com/maccman/juggernautWebSocket,. 目前 staging 环境运行还行

xmpp 协议可以,7 楼@allenwei 说的 Juggernaut 可能不行。因为是手机客户端,而不是网页。btw,他贴的地址有点问题:https://github.com/maccman/juggernaut

@weihuilee 用 mqtt 的话,手机客户端可以给服务器主动发消息吗?

#9 楼 @mobiwolf 你指的服务器是指?Mqtt Server 还是你的业务处理的服务器。而且手机客户端给服务器主动发消息,这不是应该客户端去写回调么。。

这个问题很麻烦,我现在使用的方案是 faye push 消息,同步更新。不知道你的方案是不是更好。

@weihuilee 上述所说服务器是指我 mqtt server,客户端收到消息之后,回调中根据消息中的数据:命令,然后访问 logic server。我问的意思是说 mqtt server 没有发消息的时候,那么客户端就不能给服务器发消息了。我现在的应用中需要实时的获取手机的 GPS 数据。

#12 楼 @mobiwolf 这里我觉得实时获取手机数据的话,还是直接访问你的 logic server,收集用户的 gps 数据,而 mqtt server 只是作为一个消息通道,由你的 push engine 向你的客户端推送消息

#8 楼 @hlcfan 地址确实错了,连一起去了,我就是在 Native iOS 上用的,没问题

#14 楼 @allenwei 是监听端口么?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号