推送vs轮询结果

时间:2017-04-22 06:20:02

标签: android google-cloud-messaging

我有一些请求可能需要2分钟才能处理完毕。这些请求从Android应用程序发送到服务器。我的服务器的请求超时是固定的(即30秒)。所以我将不得不在服务器上缓存请求/结果,当客户端再次使用相同的请求时,我可以返回缓存的结果。我可以用两种方式做到这一点

  • 客户端将使用请求命中服务器,服务器将阻止客户端并等待结果返回。如果是,则返回结果。否则客户端将获得超时结果。然后客户端将再次尝试(这次服务器将不再进行处理,它将每隔1秒轮询一次缓存以查看结果是否从上一个请求更新)。在重试中,客户端将被阻止30秒或服务器获得结果。
  • 客户端使用请求命中服务器,服务器返回空响应。然后,当服务器完成任务时,服务器会向客户端发送GCM ping。当客户端收到ping时,它会再次发出请求并返回结果。

我知道,如果获得结果的持续时间很长(> 30分钟),GCM ping会更好,因为其他解决方案需要不必要的轮询。但是当请求最多可以达到120秒时呢。

1 个答案:

答案 0 :(得分:0)

如何立即返回id(而不是空响应),然后在轮询时使用id。这样,如果您不想使用轮询请求加载应用程序服务器,则可以将结果放在不同的位置。轮询次数较少。 GCM无法保证交付。