Как включить кодирование передачи:chunked в Java на AppEngine

Я провел несколько поисков в Google по этой теме, но не смог ничего найти (кроме подтверждения того, что AppEngine игнорирует вызовы 'resp.setHeader("Transfer-Encoding", XXXX) ".

Моя проблема в том, что у меня есть серверный процесс, который занимает немного времени (~3 секунды), но который дает результаты в непрерывном потоке (то есть первый объект данных готов через 10 мс).

В настоящее время сервер буферизует ответ, а затем выкладывает весь лот клиенту для отображения. Хотя это работает, это не блестящий пользовательский опыт, так как пользователь должен ждать завершения всего процесса, прежде чем он сможет увидеть первые результаты...

Я полагаю, что использование передачи по частям решило бы эту проблему, так как я мог бы сразу отправить первый ответ клиенту (и передать последующие данные, как только они стали доступны), давая гораздо лучшее представление о прогрессе и т. Д.

Моя проблема в том, что я не могу понять, как включить частичную передачу.

Поиск в Google для чанкованной передачи и механизм приложений в основном включают сообщения от людей, желающих отключить чанкованную передачу из хранилища, или сообщения о том, что чанковая передача включена по умолчанию. Однако мое тестирование на сегодняшний день показало, что, по крайней мере для моего приложения, это не так.

Аналогично, ссылки не-app-engine говорят о настройке заголовка контента 'Transfer-Encoding' - но это явно игнорируется в AppEngine (по крайней мере, это в соответствии с документами Python - не найдено ничего на стороне Java, что утверждает его) явно, но это не работало, когда я проверял это также).

наконец, я уже пытался очистить объект respose, получить средство записи и очистки, получить поток вывода ответа и очистку и т. д. без разницы.

Итак, мой вопрос: как включить чанк-передачу?

1 ответ

Решение

Appengine не поддерживает потоковую передачу ответов. Весь ответ должен быть возвращен сразу.

App Engine не поддерживает отправку данных клиенту, выполнение большего количества вычислений в приложении, а затем отправку большего количества данных. Другими словами, App Engine не поддерживает потоковую передачу данных в ответ на один запрос.

Смотрите ответы Java

Другие вопросы по тегам