MateのRemoteObjectInvokerを使用して、FluorineFXベースのAPIのメソッドを呼び出しています。ただし、すべての要求はサーバーのシーケンシャルに送信されているようです。つまり、メッセージのグループを同時にディスパッチすると、最初のメッセージが返されるまで2番目のメッセージは送信されません。この動作を変更する方法はありますか?長いリクエストの処理中にアプリが応答しなくなるのは望ましくありません。
1 に答える
このスレッドは、何が起こるかを理解するのに役立ちます(blazeds / livecylceについて説明していますが、Fluorineも同じアプローチを使用していると思います)。簡単に言うと、次のようになります。a)Flash Playerは、すべての通話を1つのHTTPPOSTにグループ化します。b)サーバー(BlazeDs、Fluorineなど)がリクエストを受信し、メソッドの実行を次々に開始します。
ソリューション
a)すべてのAMFメッセージを含む1つのHTTPポストではなく、メソッドごとに1つのHTTPポストを用意します。そのためには、AMFChannelsの代わりにHTTPChannelを使用できます(内部的には、flash.net.NetConnectionの代わりにflash.net.URLLoaderを使用しています)。ブラウザで定義されている並列接続の最大数に制限されます。
b)HTTPポストは1つだけですが、サーバーに巧妙なソリューションを実装します(開発に多くの時間がかかります)。基本的に、独自の並列プロセッサを作成し、メッセージコンシューマ/パブリッシャーを使用して、メソッドの結果をクライアントに送信できます。
c)https://bugs.adobe.com/jira/browse/BLZ-184にa)と同様の回避策があります-リモートオブジェクトを手動で作成し、エンドポイントの最後にランダムIDを追加します。