0

我有一个在浏览器中运行的 Flex 应用程序,并作为 AIR 的独立应用程序运行。在我们的应用程序中,您可以下载在服务器端生成的包含报告的 zip 文件。这个 zip 文件可能非常大(数 GB)并且需要一段时间才能下载。基本上,我们从客户端执行 HTTP POST:

m_file = new FileReference();
m_file.download( request, filename );

另一方面,我们每 15 秒从客户端向服务器发送一次 ping,以确保服务器仍然存在。服务器用他的名字响应 ping。当我们在 30 秒内没有得到响应时,我们会向用户显示服务器已关闭的消息。

现在,实际的问题是,在我们下载报告时,对服务器的 ping 请求永远不会被发送。奇怪的是,这只发生在 Windows 上的 Adob​​e AIR 中。在 Windows 上的 Firefox 上这不是问题。Mac OS X 上的 AIR 也不是问题

我在 ping 操作周围放置了一些日志来显示它:

[trace] 1: Mon Jul 16 16:00:20 GMT+0200 2012
[trace] return : 1: Mon Jul 16 16:00:20 GMT+0200 2012
[trace] 2: Mon Jul 16 16:00:35 GMT+0200 2012
[trace] return : 2: Mon Jul 16 16:00:35 GMT+0200 2012
[trace] 3: Mon Jul 16 16:00:50 GMT+0200 2012
[trace] return : 3: Mon Jul 16 16:00:50 GMT+0200 2012
[trace] 4: Mon Jul 16 16:01:05 GMT+0200 2012
[trace] 5: Mon Jul 16 16:01:20 GMT+0200 2012
[trace] 6: Mon Jul 16 16:01:35 GMT+0200 2012
[trace] 7: Mon Jul 16 16:01:50 GMT+0200 2012
[trace] fault 4: Mon Jul 16 16:02:05 GMT+0200 2012
[trace] fault 5: Mon Jul 16 16:02:05 GMT+0200 2012
[trace] fault 6: Mon Jul 16 16:02:05 GMT+0200 2012
[trace] fault 7: Mon Jul 16 16:02:05 GMT+0200 2012
[trace] 8: Mon Jul 16 16:02:05 GMT+0200 2012
[trace] fault 8: Mon Jul 16 16:02:20 GMT+0200 2012
[trace] 9: Mon Jul 16 16:02:21 GMT+0200 2012
Player session terminated
[AIR Debug Launcher]: Process finished with exit code 1

您可以看到操作 1、2 和 3 运行良好并立即返回。此时,我们开始下载报告。注意操作 4 不会立即返回。15 秒后,操作 5 开始,然后是 6 和 7,各间隔 15 秒。然后突然,恰好在 1 分钟之后,操作 4 像在那一分钟内启动的所有其他请求一样返回到故障处理程序。

Note that in the background, the HTTP POST keeps running as long as the AIR app keeps running (checked with Charles). The ping request itself does not show up in charles, nor do I see them in the BlazeDS debug loggin if I enable that. It is like the AIR application never even tries to do the ping request on the server.

Is there anybody who has an idea what might be wrong? Any additional things I can check/debug?

I am using Flex SDK 4.5 and Adobe AIR 3.3

4

1 回答 1

0

Maybe this is due to a HTTP connection limit on Windows. I found this post that describes a similar issue: Adobe AIR HTTP Connection Limit

于 2012-07-19T08:33:54.720 回答