2017-04-22 44 views
0

我有一些需要花費2分鐘才能處理的請求。這些請求從Android應用發送到服務器。我的服務器的請求超時是固定的(即30秒)。所以我將不得不在服務器上緩存請求/結果,並且當客戶端再次使用相同的請求時,我只能返回緩存的結果。我可以通過兩種方式執行此操作:推和結果查詢

  • 客戶端將按請求命中服務器,服務器將阻止客戶端並等待結果返回。如果是這樣,那麼它會返回結果。否則客戶端會得到超時結果。然後客戶端將再次嘗試(此時服務器不會再次執行處理,它將每隔1秒輪詢一次緩存以查看結果是否從先前的請求中更新)。在重試中,客戶端將被阻塞30秒或服務器獲得結果。
  • 客戶端用請求點擊服務器,服務器返回空響應。然後,當服務器完成任務時,服務器將GCM ping發送到客戶端。當客戶端收到ping時,它會再次發出請求並返回結果。

我知道如果因爲其他解決方案需要不必要的輪詢,得到結果的持續時間很長(> 30分鐘),GCM ping會更好。但是什麼時候請求最多可以花費120秒。

回答

0

如何立即返回一個id(而不是空的響應),然後在輪詢時使用id。這樣,如果您不想使用輪詢請求加載應用程序服務器,則可以將結果放在不同的位置。投票次數較少。 GCM不保證交付。