Dotyczy to podstaw komunikacji w protokole. Klient systemu Android zażądał transakcji, a serwer musi ją wykonać. Jeśli transakcja jest zależna od potwierdzenia klienta Android, to należy zadzwonić do komunikacji ACK / NAK.
ACK (potwierdzenie) i NAK (negatywne potwierdzenie) są używane do poinformowania drugiej strony o wyniku żądania.
To, o co pytasz, to rodzaj wymiany uzgadniania między klientem a serwerem, którą można wykonać za pomocą podstawowej wymiany ACK / NAK.
Oto przykład przesyłania przez system Android pliku z dwukierunkowym potwierdzeniem.
Android -> upload files -> Server
Android <- ACK #id <- Server
Android -> ACK #id -> Server
W powyższym przykładzie dodałem #id
unikalny identyfikator transakcji. Serwer powinien otrzymać pliki, utworzyć rekord transakcji i wysłać go jako odpowiedź z powrotem do Androida. Android powinien następnie potwierdzić tę transakcję (lub alternatywnie NAK za odrzucenie).
Oto przykład odłączania się Androida podczas uzgadniania.
Android -> upload files -> Server
Android <- ACK #id <- Server
/** no ACK response **/
W powyższym przykładzie serwer zaakceptował przesłane pliki i wysłał #id
odpowiedź ACK z powrotem do Androida, ale Android nigdy nie odpowiada ACK. Urządzenie z Androidem nie zakończyło uzgadniania. To Ty decydujesz, jak serwer powinien to obsłużyć. Zniszcz transakcję, zachowaj transakcję i poczekaj, aż urządzenie z Androidem wróci później lub mimo to sfinalizuj transakcję.
Serwer może założyć, że ponieważ urządzenie nie odpowiedziało za pomocą ACK. To, że urządzenie z Androidem nie zaktualizowało stanu wewnętrznego, aby wskazać, że przesyłanie się powiodło. Odrzuciłbym transakcję i pozwoliłbym urządzeniu powtórzyć ją w przyszłości.