Поддержка запросов Range на чистом HTTP-сервере

Можно ли создать конвейер, поддерживающий запросы диапазона? В качестве альтернативы, может ли кто-нибудь указать мне на части API, на которые мне следует обратить внимание, если я хочу реализовать такую ​​​​поддержку самостоятельно?

(по мотивам https://github.com/webbit/webbit/issues/49)


person jabley    schedule 18.11.2011    source источник


Ответы (2)


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

Примеры Netty, касающиеся обслуживания файлов, должны помочь.

На самом деле я думаю, что по умолчанию весь файл отправляется как «диапазон», но вы можете создать свой собственный диапазон, и тогда он будет отправлен в виде фрагментированного ответа.

person burtonator    schedule 20.11.2011
comment
Я думаю, что эта функциональность должна быть встроена в Netty, подобно существующей http://docs.jboss.org/netty/3.2/api/org/jboss/netty/handler/codec/http/HttpContentCompressor.html. Я подниму вопрос и, надеюсь, придумаю тесты и патч. - person jabley; 22.11.2011

Возможно, вы захотите взглянуть на нашу библиотеку SIRIUS с открытым исходным кодом, которая обеспечивает тонкий слой над netty. Мы реализовали поддержку запросов диапазона в нашем методе отправки файла:

https://github.com/scireum/sirius/blob/develop/web/src/sirius/web/http/Response.java#L504

Наш инструмент «S3Ninja» (http://s3ninja.net — лицензия MIT), который эмулирует S3 API, успешно доставляет видео на iPhone. Устройства /iPad, которые, например, требуют поддержки запросов диапазона.

Не стесняйтесь использовать SIRIUS (http://sirius-lib.net) в своем собственном продукте (по лицензии MIT) или вдохновитесь кодом, это не так сложно сделать.

person Andreas Haufler    schedule 11.01.2014