これは、プロトコル通信の基本に該当します。Androidクライアントからトランザクションが要求され、サーバーはトランザクションを実行する必要があります。トランザクションがAndroidクライアントの確認応答に依存している場合、これはACK / NAK通信の呼び出しです。
ACK(肯定応答)とNAK(否定応答)は、要求の結果を相手側に伝えるために使用されます。
求めているのは、クライアントとサーバー間のハンドシェイク交換の一種であり、基本的なACK / NAK交換で実行できます。
以下は、Androidが双方向確認でファイルをアップロードする例です。
Android -> upload files -> Server
Android <- ACK #id <- Server
Android -> ACK #id -> Server
上記の例では#id
、トランザクションに一意の識別子を追加しました。サーバーはファイルを受信し、トランザクションレコードを作成し、応答としてAndroidに送信します。その後、Androidはそのトランザクションの承認(または拒否の場合はNAK)を確認する必要があります。
以下は、ハンドシェイク中にAndroidが切断する例です。
Android -> upload files -> Server
Android <- ACK #id <- Server
/** no ACK response **/
上記の例では、サーバーはアップロードされたファイルを受け入れ、#id
AndroidにACK応答を送信しましたが、AndroidはACKで応答しません。Androidデバイスはハンドシェイクを完了できませんでした。サーバーがこれを処理する方法を決定するのはあなた次第です。トランザクションを破棄し、トランザクションを保持し、Androidデバイスが後で戻るか、トランザクションを完了するまで待ちます。
サーバーは、デバイスがACKで応答しなかったためと想定できます。Androidデバイスが内部状態を更新せず、アップロードが成功したことを示します。トランザクションを破棄し、デバイスが将来それを繰り返すことを許可します。