iOS中轮询Web服务任务完成情况的最佳实践

iOS中轮询Web服务任务完成情况的最佳实践,ios,web-services,long-polling,polling,Ios,Web Services,Long Polling,Polling,假设我们有一个与web服务通信的iOS应用程序。某些请求被委托给另一个web服务,以便在另一端进行操作时立即返回HTTP 200状态码: |iOS app| |Main service| |Delegate service| | request | | |------------------->|_ delegate |_ |

假设我们有一个与web服务通信的iOS应用程序。某些请求被委托给另一个web服务,以便在另一端进行操作时立即返回HTTP 200状态码:

|iOS app|          |Main service|    |Delegate service|   
    |     request        |                    |
    |------------------->|_      delegate     |_
    |                    | |----------------->| |
    |     HTTP 200       | |     accepted     | |
    |<-------------------|_|<-----------------| |
    |                    |                    | |
    |                    |                    | | 
    |     status?        |                    | |
    |------------------->|_                   | |
    |                    | |                  | |
    |     pending        | |                  | |
    |<-------------------|_|                  | |
    |                    |                    | |
    |                    |      finished      | |
    |                    |<-------------------|_|
    |                    |                    |
    |     status?        |                    |
    |------------------->|_                   |
    |                    | |                  |
    |     finished       | |                  |
    |<-------------------|_|                  |
    |                    |                    |
    |                    |                    |
| iOS应用程序| |主服务| |代理服务|
|请求||
|------------------->|_委派|_
|                    | |----------------->| |
|HTTP 200 | |接受||

| 我建议您尝试一种长轮询策略,这已在前面的线程中讨论过:。
再看看这个

我不确定这是回答这个问题的最佳地点。您可能想尝试StackExchange()中的“程序员”站点,但遗憾的是,没有服务器支持长轮询策略(它不在我们的控制之下)。服务器只是在每个请求上返回一个状态JSON。我将更新这个问题来澄清这一点。好吧,在这种情况下,我想除了不断地轮询web服务之外,您对此也无能为力。就像你说的那样,以一种“温和的方式”去做,在每次投票之间等待一段时间,最多做几次。另一种方法是创建一个门面类的Web服务,它完成了恼人的轮询部分,例如,您可以使用套接字进行通信,以避免从应用程序本身进行轮询。这是一个可以让你从iOS应用程序中摆脱轮询的想法。当系统在Android上方便地执行轮询(例如,打开收音机、批量网络请求等)时,会出现一个错误。可以在iOS上做类似的事情吗?