Некоторые файлы не будут передаваться с lighttpd на Droid - PullRequest
5 голосов
/ 23 декабря 2009

У нас возникают странные проблемы с потоковой передачей определенных файлов в нашем приложении. После большого и большого количества испытаний мы сузили его до того, что кажется чем-то вроде проблемы между lighttpd и Droid, и это не только наше приложение, но и встроенный плеер.

Если вы указываете браузер Droid на http://stream29l.grooveshark.com/collinSong.mp3, он не работает. Тот же самый файл, размещенный на Apache в http://staging.api.grooveshark.com/collinSong.mp3, отлично воспроизводит потоки. Файлы идентичны. Оба URL работают на других телефонах с 1.5 и 1.6 и на эмуляторе под управлением 2.0.1.

URL-адрес lighttpd не работает при воспроизведении через Wi-Fi или 3G.

Я предполагаю, что на сетевом уровне происходит нечто странное, что Droid не терпит, но я в конце того, что я могу отладить. Есть идеи?

ОБНОВЛЕНИЕ: Я установил lighttpd на своем ноутбуке под управлением CentOS и настроил его для обслуживания тех же файлов (извините, недоступных для внешнего мира), и Droid может нормально их обслуживать. Это должно быть специфическая проблема конфигурации с нашим сервером или разница в версиях lighttpd. Прямо сейчас мой ноутбук работает на 1.4.22, а наш производственный сервер работает на 1.5.0. Наш производственный сервер также имеет следующий набор настроек, из-за которого у меня возникли проблемы с настройкой на моем ноутбуке (примечание: у меня могут отсутствовать модули и т. Д.):

server.max-fds = 7000
server.network-backend = "gthread-aio"
server.stat-cache-engine = "fam"

на сервере также установлены следующие дополнительные модули:

                            "mod_proxy_core",
                            "mod_proxy_backend_http",
                            "mod_proxy_backend_fastcgi",

Я попытаюсь привести модули и конфиги в соответствие на 100% и посмотреть, не вызовет ли это проблему завтра. Если нет, я попытаюсь обновить свой ноутбук до версии 1.5.0 и посмотреть, сможет ли это сделать.

А пока кто-нибудь знает о проблемах, связанных с вышеуказанными конфигами?

ОБНОВЛЕНИЕ 2: Я обновил до 1.5.0 на своем ноутбуке, потоковое collinSong.mp3 все еще работало. Добавление: server.network-backend = "gthread-aio" не нарушать потоковое. Однако эта строка сделала: server.stat-cache-engine = "fam"

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

Затем я попытался оставить закомментированный stat-cache-engine на моем ноутбуке и добавить следующие строки: "Mod_proxy_core", "Mod_proxy_backend_http", "Mod_proxy_backend_fastcgi" Еще раз потоковая передача на моем ноутбуке прервалась после включения этих функций и работает, когда я их отключаю. К сожалению, они, по-видимому, необходимы для модели потоков, которую мы используем на сервере, поэтому я не могу поэкспериментировать с отключением их в работе. Я не знаю, дает ли это кому-нибудь какие-то подсказки, но это все, что у меня есть.

Я бы хотел связаться с разработчиком из Motorola, потому что это похоже на ошибку в платформе; отлично работает на других устройствах Android, ПК, iPhone, Blackberry и телефонах Nokia, но не на Droid.

Ответы [ 4 ]

1 голос
/ 27 декабря 2009

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

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

1 голос
/ 23 декабря 2009

У меня нет ответа для вас, но после некоторой очень простой проверки я могу сказать вам, что staging (Apache) возвращает 200 со всем файлом, а stream29l (lighttpd) возвращает 206 с частичным файлом. Возможно, дроид не поддерживает потоковую передачу?

0 голосов
/ 17 января 2010

На Motorola Milestone (европейский UMTS Droid) под управлением 2.0 оба потока работают без проблем. Я повторно протестирую эту страницу после получения обновления 2.0.1.

0 голосов
/ 02 января 2010

Вот возвращаемые заголовки HTTP. По крайней мере, они возвращают одинаковую длину контента.

http://stream29l.grooveshark.com/collinSong.mp3 возврат:

HTTP/1.1·200·OK(CR)(LF)
Content-Type:·audio/mpeg(CR)(LF)
ETag:·"3368448790"(CR)(LF)
Accept-Ranges:·bytes(CR)(LF)
Last-Modified:·Tue,·22·Dec·2009·17:27:55·GMT(CR)(LF)
Content-Length:·3854464(CR)(LF)
Connection:·close(CR)(LF)
Date:·Sat,·02·Jan·2010·19:01:18·GMT(CR)(LF)
Server:·lighttpd/1.5.0(CR)(LF)
(CR)(LF)

http://staging.api.grooveshark.com/collinSong.mp3 возвращает

HTTP/1.1·200·OK(CR)(LF)
Date:·Sat,·02·Jan·2010·19:02:30·GMT(CR)(LF)
Server:·Apache/2.2.14·(EL)(CR)(LF)
Last-Modified:·Mon,·21·Dec·2009·22:13:36·GMT(CR)(LF)
ETag:·"ac811e-3ad080-47b446696e400"(CR)(LF)
Accept-Ranges:·bytes(CR)(LF)
Content-Length:·3854464(CR)(LF)
Connection:·close(CR)(LF)
Content-Type:·audio/mpeg(CR)(LF)
X-Pad:·avoid·browser·bug(CR)(LF)
(CR)(LF)

См. Программа просмотра HTTP Rex Swain .

...