Для запроса с не очень коротким периодом, и пользователь отменил соединение (то есть он / она закрыл браузер до того, как запрос будет завершен), что тогда произойдет на стороне сервера?
Хотя это должно зависеть от сервера. Но каков будет общий путь?
Некоторым запросам требуется довольно много времени для завершения, например, распределенной транзакции СУБД, которая передает данные на несколько разных серверов в разных странах. (Я знаю, что это очень часто встречается в банковских приложениях)
Некоторые запросы отправляют большой кусок данных клиенту, например, когда пользователь загружает большое вложение.
Должен ли он отменить поток запроса после определенного времени ожидания?
Если мое веб-приложение позаботится об активности пользователя и сам отменит транзакцию следующим образом:
service(request, response):
tx_start();
do {
do_some_work()
if (user_canceled) break;
do_some_work()
if (user_canceled) break;
do_some_work()
if (user_canceled) break;
do_some_work()
if (user_canceled) break;
do_some_work()
if (user_canceled) break;
tx_commit();
return;
} while (false);
tx_rollback();
throw new CanceledException();
}
я должен?