0

HTTPService.send() 呼び出しを介して http サーバーでスクリプトを起動する mxml ファイルを取得しました。

サーバー側のスクリプトには非常に長い時間がかかるため (1 時間以上かかることもあります)、ボタンがクリックされたときに Air アプリケーションとサーバー間の接続を切断したいと考えています。

理由はわかりませんが、HTTPService.disconnect() の呼び出しはまったく役に立ちません... tcp 接続が切断されず、スクリプトがサーバー側で実行され続けます。

HTTPService.cancel() も HTTPService var を null に設定することもできませんでした。

接続を切断するにはどうすればよいですか?

前もって感謝します

4

1 に答える 1

0

あなたが言及している2つの方法のドキュメントを見て、実際にはTCP接続を閉じるとは言っていませんが、実際には逆に、彼らは何も待っていない、または何もしていないと言っていますTCP 接続について: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/http/HTTPService.html

キャンセル()

  • 最後のサービス呼び出しまたは指定された ID の呼び出しをキャンセルします。ネットワーク操作は続行されますが、結果イベントまたは障害イベントはディスパッチされません (<-- これは、結果イベントまたは障害イベントがディスパッチされるのを停止します)。

切断()

  • サービスのネットワーク接続を切断します。このメソッドは、未処理のネットワーク操作が完了するのを待ちません (このサービス ネットワーク接続を切断するだけで、既存のネットワーク操作を停止するとは述べていません)。

ソースを掘り下げて、何が起こっているのかをより具体的に理解することができますが、基本的にはドキュメントに記載されているように、ローカルに保存されているリストから呼び出しを削除して、リスナーを持つ「アクティブな」呼び出しのイベントをディスパッチするだけです。基本的に、Flex が処理しているサービス/サーバーの種類を認識し、現在実行中の操作をキャンセルするようサーバーに適切に通知する方法はありません。別のプロセスを強制終了する目的で特別に作成されたサーバー上に別のサービスを作成できるため、HTTPService でキャンセルを呼び出してから、プロセスを強制終了するスクリプトを実行する別の要求をサーバーに送信できます (開いているソケットを閉じ、すべてのプロセスを停止します)。保留中の操作、必要に応じてサービスの強制終了または再起動)、しかしそこには ' サーバー側でどのような処理が行われるのを止めたいかを知らなければ、これを完全に自動化することはできません。クライアントコードを介してサーバーで操作をキャンセルするためのオープンゲートウェイがあったとしたら、これは危険に思えます。

于 2012-03-20T19:43:13.423 に答える