ASP.net непрерывный поток ответов

2

Мне было интересно, как я смогу отправить непрерывный поток ответов, не закрыв его в конце концов. Чтобы лучше объяснить мой вопрос, подумайте о странице asp как прокси, передающей сторонний поток из другого источника (аудиопоток или видеопоток, передаваемый другим источником).

Очевидно, Response.Write() или Response.BinaryWrite() ограничивают меня предопределенным источником.

Спасибо заранее.

Теги:
stream
response

3 ответа

3

Вы можете отключить буферизацию ответа, используя свойство BufferOuput текущего объекта HttpResponse.

  • 0
    Спасибо за ответ. Существует также проблема фактического вывода ответа таким способом, поскольку методы, предоставляемые объектом Response, допускают только предварительно определенные байтовые массивы и тому подобное. По сути, мне нужно было бы запустить два параллельных объекта, один из которых был бы читателем, а другой записывал содержимое, которое читалось читателем, на выход.
1

Я мог бы предположить, что отключить буферизацию откликов или использовать Response.Flush() регулярно следует делать трюк.

Установив IHttpHandler, вы просто убедитесь, что ваш метод Process() никогда не заканчивает выполнение, поэтому ваш запрос никогда не закончится.

  • 0
    о вашем ограничении предопределенным источником, который вам нужно настроить 1. чтение из потока 2. сохранение в буфер 3. буфер записи в ответ (BinaryWrite) 4. сбросить ответ 5. повторить с шага 1
  • 0
    Спасибо за это. Я только что написал Кену Браунингу о необходимости запуска двух одновременно работающих объектов, и это показалось немного излишним для веб-страницы. С другой стороны, я задаюсь вопросом о том, потеряет ли это то, что вы упомянули, что оно потеряет какие-либо пакеты (поскольку это живой поток), хотя это не должно быть такой большой проблемой, особенно если бы я делал это в маленькие куски.
Показать ещё 3 комментария
0

В дополнение к try Response.Buffer = false и вызовам, таким как Response.Flush(), убедитесь, что вы не используете прокси-сервер/отладчик Http во время тестирования. Я не смог заставить это работать, пока я не закрою Fiddler.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню