Need to handle client communications exceptions ("handle" in the sense of "catch them", and also "do something reasonable about them").
Need client timeout (short). If fails (after auto-retry), maybe give the user a "try again" or "keep trying" option and do again with much longer timeout.
Need client retry mechanism (based on exception or timeout).
Need mechanism to synchronize transactions (prevent new transaction until previous transaction completes). Tricky.
Communicate "waiting" state to user (hourglass type visual indicator, but probably only shown after 500ms+, so you don't typically see it, but you do if there is a "long" delay). Probably always show on an auto-retry.
Communicate comms failures to user - MessageBox: "Sorry, you're screwed and aren't doing anything now, click to retry".
Need to handle client communications exceptions ("handle" in the sense of "catch them", and also "do something reasonable about them").
Need client timeout (short). If fails (after auto-retry), maybe give the user a "try again" or "keep trying" option and do again with much longer timeout.
Need client retry mechanism (based on exception or timeout).
Need mechanism to synchronize transactions (prevent new transaction until previous transaction completes). Tricky.
Communicate "waiting" state to user (hourglass type visual indicator, but probably only shown after 500ms+, so you don't typically see it, but you do if there is a "long" delay). Probably always show on an auto-retry.
Communicate comms failures to user - MessageBox: "Sorry, you're screwed and aren't doing anything now, click to retry".