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 がフォルト ハンドラに戻り、その 1 分間に開始された他のすべての要求も同様です。

バックグラウンドでは、AIR アプリが実行されている限り、HTTP POST が実行され続けることに注意してください ( Charlesに確認)。ping 要求自体が charles に表示されず、有効にしても BlazeDS デバッグ ログに表示されません。これは、AIR アプリケーションがサーバー上で ping 要求を実行しようとさえしないようなものです。

何が間違っているのか考えている人はいますか? チェック/デバッグできるその他のことはありますか?

Flex SDK 4.5 と Adob​​e AIR 3.3 を使用しています

4

1 に答える 1

0

これは、Windows の HTTP 接続制限が原因である可能性があります。同様の問題を説明する次の投稿を見つけました: Adob​​e AIR HTTP 接続制限

于 2012-07-19T08:33:54.720 に答える