0
我有一些需要花費2分鐘才能處理的請求。這些請求從Android應用發送到服務器。我的服務器的請求超時是固定的(即30秒)。所以我將不得不在服務器上緩存請求/結果,並且當客戶端再次使用相同的請求時,我只能返回緩存的結果。我可以通過兩種方式執行此操作:推和結果查詢
- 客戶端將按請求命中服務器,服務器將阻止客戶端並等待結果返回。如果是這樣,那麼它會返回結果。否則客戶端會得到超時結果。然後客戶端將再次嘗試(此時服務器不會再次執行處理,它將每隔1秒輪詢一次緩存以查看結果是否從先前的請求中更新)。在重試中,客戶端將被阻塞30秒或服務器獲得結果。
- 客戶端用請求點擊服務器,服務器返回空響應。然後,當服務器完成任務時,服務器將GCM ping發送到客戶端。當客戶端收到ping時,它會再次發出請求並返回結果。
我知道如果因爲其他解決方案需要不必要的輪詢,得到結果的持續時間很長(> 30分鐘),GCM ping會更好。但是什麼時候請求最多可以花費120秒。