【发布时间】:2012-04-07 23:01:12
【问题描述】:
我需要在我的 iOS 应用中实现一个实时的项目队列。 (后来的 Android 也是)。
主要用例是用户查看所有用户的实时共享队列。可以有多个队列,但目前用户一次只能看到一个队列。 如果一个用户从队列中删除项目,则查看同一队列的 iOS 应用程序的所有其他用户应该会实时看到队列更新。如果我的服务器检测到新项目已添加到某个队列,则应将其推送到实时查看该队列的所有其他客户端。
实施这种机制的最佳方式是什么?目前仅支持 iOS,但它应该是一个简单的解决方案,这样以后添加其他移动平台就不会麻烦了。
我猜有两个主要选项:
- 使用 Web 技术(JS 和 Html5)(基本上呈现 UIWebView)
- 原生方式 - 使用苹果的推送通知或其他持久连接选项。 (如果我希望能够提醒用户队列更改,即使应用程序处于后台或上帝禁止关闭,推送通知会更好)
显然我也可以选择混合解决方案。
我熟悉以下 PUB-SUB 解决方案:
1.Xmpp (extension to Xmpp would be more accurate)
2.MQTT
3.Pubnub - http://www.pubnub.com/ (pretty new out there)
4. I read about Linked-in Kafka, but that seems way more advance and complicated to ny current needs.
我很想知道是否有人尝试过任何论文或其他论文,可以推荐一个,并说是否本地或网络是首选路径。 所选择的解决方案必须易于使用,并且可以快速实施,即使成本很小。 (服务器端主要是用 php 编写的,但 node.js 也是一个选项)
谢谢
【问题讨论】:
-
您的首选是将队列放在服务器上并在那里访问,或者尝试在所有用户之间保持客户端队列的同步。部分决定取决于更新的频率,以及同步的即时性和精确性。
-
队列将由服务器维护,我想不出任何充分的理由让我的 iOS 客户端负责将队列状态传达给所有连接并当前查看队列的用户,以及处理队列状态。除非我误解了你所说的,否则我的建议是服务器应该向所有客户端推送他们订阅的队列中的任何更改。
-
那么您可能应该只推送“它已更改”通知并让您的客户回来并刷新他们对队列的“视图”。您也许可以推送“它已更改”的限定词,以便客户知道特定更改是否对他们的需求“显着”,但这就是我所能做到的。处理推送的三种方式是推送通知(可能是最好的选择)、打开“get”和轮询。
标签: php ios real-time message-queue publish-subscribe