5

アプリで特定のファイルをストリーミングする際に奇妙な問題が発生しています。何度も何度もテストを重ねた結果、lighttpd と Droid の間の何らかの問題のように見えるものに絞り込みました。これはアプリだけでなく、組み込みのプレーヤーにもあります。

Droid ブラウザでhttp://stream29l.grooveshark.com/collinSong.mp3を指定しても機能しません。http://staging.api.grooveshark.com/collinSong.mp3で Apache にホストされている同じファイルは、完全にストリーミングされます。ファイルは同一です。どちらの URL も、1.5 および 1.6 を実行している他の電話、および 2.0.1 を実行しているエミュレーターで機能します。

wifi または 3G で再生する場合、lighttpd URL は失敗します。

私の推測では、ネットワーク レベルで、Droid が許容できない奇妙なことが起こっていると思われますが、デバッグできる範囲は限られています。何か案は?

更新: CentOSを実行しているラップトップにlighttpdをインストールし、同じファイルを提供するように設定しました(申し訳ありませんが、外部からはアクセスできません)。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 デバイス、PC、iPhone、Blackberry、Nokia の携帯電話では正常に動作しますが、Droid では動作しません。

4

4 に答える 4

1

私はもう Droid を持っていないので、これを自分でテストすることはできませんが、プロキシを設定し、それを使用するように Droid を構成して、両方のサーバーからの要求と応答を検査できるようにすることをお勧めします。firefox からの簡単なテストでは、応答間に大きな違いは見られないため、droid からのテストのみが役立つようです。

Fiddlerは、クライアント サーバー トランザクションのあらゆる側面を調べることができる優れたプロキシです。

于 2009-12-27T17:22:31.550 に答える
0

返される 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)

Rex Swain の HTTP Viewerを参照してください。

于 2010-01-02T19:40:25.863 に答える
0

2.0 を実行している Motorola Milestone (European UMTS Droid) では、両方のストリームが問題なく動作します。2.0.1 アップデートを受け取ったら、このページを再テストします。

于 2010-01-17T09:55:19.800 に答える