【问题标题】:Get changes immediately when something changed in server当服务器发生更改时立即获取更改
【发布时间】:2012-04-23 14:03:04
【问题描述】:

我想知道用户在服务器中输入或修改数据后立即在 iPhone 中获取数据的最佳方法是什么。我可以向服务器发送一个小时间间隔的请求,以检查服务器中所做的任何修改(如轮询)。我知道这很尴尬。请推荐一个最好的!

编辑

我不是在谈论推送通知。我需要一些数据,比如在进行板球比赛时,每次服务器中的分数更新时,我都需要在我的 iPhone 中获取该数据(通过 XML、JSON 或任何其他介质)。

【问题讨论】:

标签: iphone asynchronous client-server


【解决方案1】:

您说的是推送通知:http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html

这些让您可以将特定消息从您的服务器发送到选择从您的应用接收推送通知的设备。

【讨论】:

  • 我可以使用推送通知来连续传递大量数据吗?
  • @rakeshNS,不,我不认为这就是他们的设计目的。也不确定长轮询是否理想。你研究过同行吗?看起来 iphone 支持它:support.apple.com/kb/HT3621
【解决方案2】:

您要查找的内容称为"Push Technology"(同一想法有多种变体)。就您而言,我认为最适合的是“长轮询”。简而言之:

  1. 您轮询指定了很长的超时时间;
  2. 服务器在收到一些新数据之前不会回复,因此只要超时允许,您的请求就会保持打开状态;
  3. 一旦服务器有新数据,它就会回复,你立即得到更改;
  4. 当超时到期时,您会发送一个新请求。

进行长轮询这一事实将减少您担心“短”轮询的开销。实际上,通过短轮询,想法是发送频繁的请求,并且循环时间非常短。这将使您不断发送请求以检查新数据。通过长轮询,您仅在获得新数据或超时触发(可能是几分钟)时才发送请求。

this S.O. post,你会找到实现它的方法。

【讨论】:

  • 推送通知更适合移动设备,因为它们比执行长时间轮询使用更少的电池。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
相关资源
最近更新 更多