Разрабатываю REST HTTP API, некоторые вызовы работают довольно долго (часы), возникла потребность в контрольном протоколе.
Планировал так: запустить в фоне задачу, периодически писать в HttpOutputStream строки вида CONTROL_MESSAGE:Status 42%, в клиенте их читать и выводить на экран.
По факту, наткнулся на неприятный момент: Embedded Jetty 8.1.5 буферизирует вывод, flush() не помогает.
На so пишут, что дело в chunk encoding, попытался его обойти через Connection: close и setContentLength(MAX_INT), не работает.
Что-то я упускаю, ведь должно ведь работать? Как-то ведь Comet работает через http streaming, там точно такая же задача — периодически писать в HttpOutputStream, но там сообщения доставляются сразу же. Или я не так понимаю технологию?
UPD похоже, мне нужно как-то вручную разбивать сообщения на куски (chunks), но пока не ясно как.