Комета - Потоковое HTTP с IHttpAsyncHandler - чанк не работает
Я пытаюсь реализовать потоковую передачу HTTP с помощью IHttpAsyncHandler и сброса.
По сути, я периодически возвращаюсь к ответу - сохраняя соединение, открытое до истечения времени ожидания, - и тогда клиент должен инициировать другое соединение.
Сброс действительно работает, и клиент получает сбросы по мере их возникновения, однако ответ становится агрегированным. Например, если я отправлю следующие данные:
"TextOnFlush1"
"TextOnFlush2"
"TextOnFlush3"
Клиент получит следующие сбросы (в XMLHttpRequest.responseText):
"TextOnFlush1"
"TextOnFlush1""TextOnFlush2"
"TextOnFlush1""TextOnFlush2""TextOnFlush3"
Как вы можете видеть, в конечном итоге клиенту придется обрабатывать очень большое сообщение (которое будет содержать все ранее сброшенные данные). Есть ли способ работать с флешем, но очищать респон на каждом флеше?
Обратите внимание, что заголовок ответа содержит этот заголовок: "Transfer-Encoding:chunked", что означает, что я действительно должен получать содержимое порциями, но вместо этого я получаю агрегированные сообщения.
1 ответ
Таким образом, нет способа заставить браузер очищать ответ при каждой очистке, поэтому рекомендуется ограничить этот размер сообщения и время от времени обновлять потоковое сообщение для больших данных.