Flex・RemoteObject用のユーティリティクラス
「WEBあしか」にて実際に使っている通信用のライブラリ"RemoteUtil"を公開してみます。
RemoteUtilソースファイル(github)
RemoteUtilとは?
RemoteUtilとは、Flexのライブラリの一つである"RemoteObject"をラップし、さらにつかいやすくしたライブラリです。
RemoteUtilには以下の特徴があります。
- ResultイベントとFaultイベントを毎回設定する必要がない
- RemoteObjectを使う際、ResultイベントとFaultイベントを毎回設定するのはとても面倒です。ですがRemoteUtilではライブラリ内で一元的にRemoteObjectにResult・Faultイベントを設定しているため、毎回設定する必要はありません。
- またdebugフラグをONにしている場合、FaultイベントのエラーメッセージがAlertで表示されるようになっているため、デバックも楽に行えます。
- リトライ処理を簡単に実装可能!
- 不安定なサーバーとの間で通信を行う場合、確実に通信をするために、失敗時にリトライ処理を行うのはもっともオーソドックスな手段です。ですが実際に実装しようとすると、全ての通信処理でリトライ処理を実装するのは中々骨の折れる作業となります。そんなときでもRemoteUtilを使えば簡単にリトライ処理を実装することができます。
ではここで実際の使用例を記載していきます。
- 基本となる使用例
var data:Object = null; var remoteUtil:RemoteUtil = new RemoteUtil('destinationIDをここに指定'); remoteUtil.resultEvent = function (event:ResultEvent):void { // 通信成功時の処理 // thisからRemoteUtilのプロパティにアクセスすることができます。 data = event.result; // データの取得例 }; remoteUtil.faultEvent = function ():void { // 通信失敗時の処理 } remoteUtil.remoteEvent = function ():void { // RemoteObject処理 // イベント内のthis.remoteでRemoteObjectにアクセスできます this.remote.getData(); }; // 通信の開始(remoteEventプロパティに設定したイベントが実行されます) remoteUtil.start();
上記例では各イベント処理を設定していますが、remoteEvent以外のイベントは必須ではありませんので設定しなくても問題ないです。
- オプションの設定
上記例と合わせて記述することで複雑な処理を実行させることが可能です。
// ※いずれのオプションもstartメソッドを実行する前に設定してください。 // 通信の結果として返ってきた値がnullもしくは空文字だった場合にエラーを表示することが出来ます。 remoteUtil.showResultErrorMessage = true; remoteUtil.resultErrorMessage = "データの取得ができませんでした。\nページをリロードして再度表示してみてください。"; // retryプロパティをtrueに設定すると、通信の失敗時に自動的にリトライ処理が行われます。 // リトライの回数はretryNumで設定することができます。 remoteUtil.retry = true; remoteUtil.retryNum = 3;
この他のオプションに関しては、ソース内にて解説していますのでそちらをご覧ください。