我需要在我的 iOS 应用程序中实现项目的实时队列。 (后来的 Android 也是)。
主要用例是让用户查看所有用户的实时共享队列。可以有很多队列,但目前用户一次只能看到一个队列。 如果一个用户从队列中删除项目,则查看同一队列的 iOS 应用程序的所有其他用户应该实时看到队列更新。如果我的服务器检测到一个新项目被添加到某个队列,它应该被推送到实时查看该队列的所有其他客户端。
实现这种机制的最佳方式是什么?目前仅支持 iOS,但它应该是一个简单的解决方案,以便以后添加其他移动平台不会有麻烦。
我想有两个主要选项:
- 使用网络技术(JS 和 Html5)(主要是呈现 UIWebView)
- native 方式 - 使用苹果的推送通知或其他持久连接选项。 (如果我希望即使应用程序处于后台或上帝禁止关闭也能够提醒用户队列更改,推送通知会更好)
显然我也可以选择混合解决方案。
我熟悉以下 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.
我很想知道是否有人尝试过任何论文或其他论文,可以推荐一个,并说明 native 还是网络是首选路径。 所选择的解决方案必须易于使用,并且可以快速实现,即使成本很小也是如此。 (服务器端主要用php编写,但也可以选择node.js)
谢谢
最佳答案
要更新移动客户端(或任何类型的客户端)关于服务器端队列(或任何类型的任何数据系统/结构、RDBMS、No-SQL、文件等)的状态,您可以使用 PubNub .
您的客户将订阅一个名为 queue-status
的 channel (随便命名)。每当队列被任何客户端或服务器端进程更新时,在成功提交更改后,您会将更改/状态发布到 queue-status
channel ,并且您所有积极订阅的客户端都将获得无论有多少客户或他们位于世界何处,更新都在 < 1/4 之内。
如果客户端应用程序在该 channel 上注册了 APNS(推送通知)并且该应用程序未运行或不在前台,则客户端设备将收到该推送通知。
使用 PubNub PHP SDK for your server side to publish the messages , 和 PubNub iOS SDK to subscribe to receive the messages .
别忘了使用 PubNub Access Manager to lock down access to your channels .
关于php - 在 iOS 客户端中实现实时队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9838287/