Ciò rientra nelle basi della comunicazione del protocollo. È stata richiesta una transazione dal client Android e il server deve eseguire la transazione. Se la transazione dipende dal riconoscimento del client Android, questa è la comunicazione ACK / NAK.
ACK (riconoscimento) e NAK (riconoscimento negativo) vengono utilizzati per comunicare all'altro lato il risultato di una richiesta.
Quello che stai chiedendo è un tipo di scambio di handshaking tra client e server e può essere eseguito con uno scambio ACK / NAK di base.
Ecco un esempio di caricamento di un file Android con riconoscimento bidirezionale.
Android -> upload files -> Server
Android <- ACK #id <- Server
Android -> ACK #id -> Server
Nell'esempio sopra ho aggiunto un #id
identificatore univoco per la transazione. Il server dovrebbe ricevere i file, creare un registro delle transazioni e inviarlo come risposta ad Android. Android dovrebbe quindi seguire con un riconoscimento di tale transazione (o in alternativa un NAK per un rifiuto).
Ecco un esempio di disconnessione da Android durante l'handshaking.
Android -> upload files -> Server
Android <- ACK #id <- Server
/** no ACK response **/
Nell'esempio sopra, il server ha accettato i file caricati e ha inviato una #id
risposta ACK ad Android, ma Android non risponde mai con un ACK. Il dispositivo Android non è riuscito a completare l'handshaking. Sta a te decidere come il Server dovrebbe gestirlo. Distruggi la transazione, mantieni la transazione e attendi che il dispositivo Android restituisca in seguito o completi comunque la transazione.
Il server può presumere che dal momento che il dispositivo non ha risposto con ACK. Il fatto che il dispositivo Android non abbia aggiornato lo stato interno indica che il caricamento è andato a buon fine. Scarterei la transazione e consentirei al dispositivo di ripeterla in futuro.