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"

注释掉上面的行会使我的笔记本电脑上的流式传输工作,并且启用它会使其无法工作。实际上,我让我们的管理员从配置中删除了该行并重新启动 lig​​hty(他说我们无论如何都不需要该设置),但问题仍然存在。

所以接下来我尝试在我的笔记本电脑上注释掉 stat-cache-engine 并添加这些行:“mod_proxy_core”、“mod_proxy_backend_http”、“mod_proxy_backend_fastcgi” 在启用这些功能后,我的笔记本电脑上的流式传输再次中断,并且在我关闭它们时工作。不幸的是,我们在服务器上使用的线程模型显然需要这些,所以我无法尝试在生产中关闭它们。我不知道这是否会给其他人提供任何线索,但这就是我所拥有的。

我很想与摩托罗拉的开发人员取得联系,因为这似乎是该平台的一个错误;适用于其他安卓设备、PC、iPhone、黑莓和诺基亚手机,但不适用于 Droid。

4

4 回答 4

1

我不再拥有 Droid,所以我无法自己测试,但一个好方法是设置代理并配置 Droid 以使用它,这样您就可以检查来自两台服务器的请求和响应。来自 Firefox 的快速测试并没有显示出响应之间的任何大差异,因此看起来只有从 droid 进行测试会有所帮助。

Fiddler是一个出色的代理,它允许您检查客户端-服务器事务的各个方面。

于 2009-12-27T17:22:31.550 回答
1

I don't really have an answer for you but after some very basic inspection I can tell you that staging (Apache) is returning a 200 with the entire file and stream29l (lighttpd) is returning a 206 with a partial file. Perhaps droid doesn't support streaming?

于 2009-12-22T22:55:18.597 回答
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 查看器

于 2010-01-02T19:40:25.863 回答
0

在运行 2.0 的摩托罗拉 Milestone(欧洲 UMTS Droid)上,两个流都可以正常工作。我将在收到 2.0.1 更新后重新测试此页面。

于 2010-01-17T09:55:19.800 回答