iOS中轮询Web服务任务完成情况的最佳实践
假设我们有一个与web服务通信的iOS应用程序。某些请求被委托给另一个web服务,以便在另一端进行操作时立即返回HTTP 200状态码: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 |_ |
|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上做类似的事情吗?