Предполагая, что вы контролируете обе стороны системы, вы можете подделать ее, периодически отправляя данные туда и обратно, чтобы не допустить остановки сеанса - большинство браузеров не прекращают соединение, пока данные перемещаются.
В качестве общего предложения, однако, вам гораздо лучше перестроить систему, чтобы клиент отправлял запрос на работу, а затем периодически запрашивал (через Ajax), чтобы увидеть, завершено ли оно. Ajax-запросы могут задержать какое-то время, и сервер может ответить либо когда он имеет утвердительный статус, либо когда истекает период ожидания. Если по какой-либо причине истекает время запроса на обновление статуса (ошибки синхронизации или что-то в этом роде), клиент просто повторно отправляет его без вреда и видимых нарушений с точки зрения пользователя.