2016-10-27 6 views
0

Может ли HTTP-сервер отвечать битками по битам - без ответа на запрос «Range»?Может ли http отправить потоковый ответ, не будучи ответом/запросом диапазона?

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

Могу ли я сделать это без того, чтобы клиент отправил мне запрос «Range» в ответ на отправку заголовка «Accept-Ranges»?

И я вижу code examples of servers streaming data back to clients, но те клиенты, которые, как ожидается, отправили заголовок диапазона?

ответ

1

Запрос диапазона запрашивает определенный диапазон байтов для ресурса. Можно с уверенностью ожидать, что запрос завершится в разумные сроки. Однако ничто не мешает вам передавать данные с сервера, не закрывая/не заканчивая соединение в обычном запросе. Это просто означает, что запрос займет много времени и, возможно, будет тратить ресурсы на сервере.

Это иногда называют «длинным опросом», особенно когда соединение в течение длительного времени простаивает (но все еще живое), отправляя данные только тогда, когда что-то происходит на сервере. Примером может служить веб-чат, хотя в эти времена веб-узлы были бы более подходящими, чем HTTP.

+0

Спасибо за отзыв! Поэтому люди могут использовать [StreamedResponse] (http://docs.oracle.com/javaee/6/api/javax/ws/rs/core/StreamingOutput.html) для потоковой передачи данных с сервера - но это только удобство на сервере действительно и не передается клиентом, если клиент не запросил ответ диапазона, и сервер ответил именно этим диапазоном? Так что даже с длинным запросом на опрос, на который сервер отвечает StreamingOutput, на самом деле не потоковая передача с точки зрения клиентов, если клиент не запросил диапазон? –

+1

Нет, просто забудьте всю вещь (или прочитайте об этом, если хотите узнать больше). – Kayaman

+0

Прохладный ... спасибо! –