Cela relève des principes de base de la communication protocolaire. Une transaction a été demandée par le client Android et le serveur doit effectuer la transaction. Si la transaction dépend de l'accusé de réception du client Android, appelez la communication ACK / NAK.
ACK (accusé de réception) et NAK (accusé de réception négatif) sont utilisés pour dire à l'autre côté le résultat d'une demande.
Ce que vous demandez, c'est un type d' échange de liaison entre le client et le serveur, et il peut être effectué avec un échange ACK / NAK de base.
Voici un exemple de téléchargement par Android d'un fichier avec accusé de réception bidirectionnel.
Android -> upload files -> Server
Android <- ACK #id <- Server
Android -> ACK #id -> Server
Dans l'exemple ci-dessus, j'ai ajouté un #id
identifiant unique pour la transaction. Le serveur doit recevoir les fichiers, créer un enregistrement de transaction et l'envoyer comme réponse à Android. Android devrait ensuite suivre avec un accusé de réception de cette transaction (ou alternativement un NAK pour un rejet).
Voici un exemple de déconnexion d'Android pendant la prise de contact.
Android -> upload files -> Server
Android <- ACK #id <- Server
/** no ACK response **/
Dans l'exemple ci-dessus, le serveur a accepté les fichiers téléchargés et renvoyé une #id
réponse ACK à Android, mais Android ne répond jamais avec un ACK. L'appareil Android n'a pas pu terminer la négociation. C'est à vous de décider comment le serveur doit gérer cela. Détruisez la transaction, conservez la transaction et attendez que l'appareil Android revienne plus tard ou terminez la transaction de toute façon.
Le serveur peut supposer que puisque le périphérique n'a pas répondu avec ACK. Que l'appareil Android n'a pas mis à jour son état interne pour indiquer que le téléchargement a réussi. Je rejetterais la transaction et autoriserais l'appareil à la répéter à l'avenir.