Комета - Потоковое HTTP с IHttpAsyncHandler - чанк не работает

Я пытаюсь реализовать потоковую передачу HTTP с помощью IHttpAsyncHandler и сброса.

По сути, я периодически возвращаюсь к ответу - сохраняя соединение, открытое до истечения времени ожидания, - и тогда клиент должен инициировать другое соединение.

Сброс действительно работает, и клиент получает сбросы по мере их возникновения, однако ответ становится агрегированным. Например, если я отправлю следующие данные:

"TextOnFlush1"
"TextOnFlush2"
"TextOnFlush3"

Клиент получит следующие сбросы (в XMLHttpRequest.responseText):

"TextOnFlush1"
"TextOnFlush1""TextOnFlush2"
"TextOnFlush1""TextOnFlush2""TextOnFlush3"

Как вы можете видеть, в конечном итоге клиенту придется обрабатывать очень большое сообщение (которое будет содержать все ранее сброшенные данные). Есть ли способ работать с флешем, но очищать респон на каждом флеше?

Обратите внимание, что заголовок ответа содержит этот заголовок: "Transfer-Encoding:chunked", что означает, что я действительно должен получать содержимое порциями, но вместо этого я получаю агрегированные сообщения.

1 ответ

Решение

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

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