Горячий, чтобы сервлет вызывал долгосрочную задачу и обновлял ход выполнения для клиента - PullRequest
0 голосов
/ 01 мая 2019

У меня много времени занимает около 5 минут, и он будет выводить результат каждую секунду, и я хочу показать прогресс в браузере клиентов.

Вот что я думаю:

Создайте сервлет, и метод doPost вызовет эту функцию и продолжит работу в фоновом режиме, а также запишет вывод в сеанс во время выполнения.

Метод doGet сервлета вернет вывод, который я сохранил в сеансе, и напишет JavaScript на стороне клиента, чтобы получать вывод каждые 5 секунд до конца.

Но при использовании этого метода первый запрос doPost приведет к зависанию клиента, поскольку сервлет не закроет соединение. Я пытаюсь очистить и закрыть принтер, прежде чем вызвать задачу, но соединение все еще открыто.

Хотя я могу установить таймаут в ajax и запустить мой код результата get, но я думаю, что это довольно грязный способ сделать это.

Может быть, я все сделал неправильно.

Обобщить:

То, что я хочу, - это то, что клиентский запрос может вызвать выполнение задачи, и клиент получит прогресс в режиме реального времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...