FLEX 用RemoteObject同时调用多个服务端函数,且指定每个调用的回调处理函数 (附下载地址)

来源:互联网 发布:淘宝头像更换失败 编辑:程序博客网 时间:2024/05/16 03:57

    在用到FLEX的AMF信道进行远程通讯过程中,很多人都碰到一个问题:实例化一个RemoteObject对象,调用多个服务端函数和指定resultHandler()来作不同的处理。

    而且我们希望远程函数调用与本地的函数调用区别开来,新手进来也不容易困惑~!

   

    下面我们来讲讲以上的问题怎么解决!

   

   

   

 


以下为升级版的补充说明:Flex远程调用批量打包通讯库

批量远程通讯接口类
  建议所有请求都使用本类
  数据缓冲池对象(FXGlobalModel)的rpc是本类的实例
    
使用的方法:
1、基于数据缓冲池访问WS:设置onFault; onResult; addCaller; 即可
2、远程调用:如需要全部请求返回后进行回调处理,则设置 onAllResult; onAllFault; 这时,调用 commit 后才会提交addDSCaller、addCaller的请求
3、请用WSRemoteObject 此类,不要直接用HtRemoteObject
4、返回的格式为:{ code: 0, ret: Object }, 错误时为:{ code: numErrorCode, what: strErrorMsg }
5、最佳使用方式:在某个单例对象中实例化WSRemoteObject :public var rpc:WSRemoteObject; 调用时可以 XXX.rpc....这样操作,如:

  XXX.currModel.rpc.onFault = onQueryFault;  XXX.currModel.rpc.onResult = onQueryResult;  XXX.currModel.rpc.addCaller(NetHandler.DATA_ACCESS_INTERFACE, "QueryOBD", queryInfo);  //此行可以不用, 不用时请在系统的某处判断rpc.callNumber>0时再commit(),也可以设定某个时间间隔来定时做此判断,比如3s或10s也可以1s,就看大家的需要了  XXX.currModel.rpc.commit();

设置:
1、请在工程的编译参数加入-services引用此标准的RO设置(./WEB-INF/flex/services-config.xml)
2、以上文件包含此项endpoint(动态取URL值):<endpoint uri="http://{server.name}:{server.port}/{context.root}/[page.php|aspx|jsp]" class="flex.messaging.endpoints.AMFEndpoint"/>(请参考官方讲解)
3、debug开启时,可用FXConfig.SERVER_URL指定通讯地址
4、destination可通过FXConfig.CURR_DESTINATION 指定,但建议用-services的指定,如asp.net的为 fluorine ,php的为zend 或 amfphp 等等,具体看用哪种服务端

补:使用时请详细查看API参考里的 FXConfig 类与 WSRemoteObject 类,再有就是 WSRemoteObject 支持的事件:RpcEvent.RPC_ERROR 此事件会在返回值code > 0 时发出,可以这样处理:
private function rpcErrorHandler(e:RpcEvent):void{  if (e.errorObject is Error)    //LogError(e.errorObject as Error);  else if (e.errorObject is FaultEvent)    //LogErrorEvent(e.errorObject as FaultEvent);}

附下载地址:http://code.google.com/p/flex-rpc/

请看完这个:http://code.google.com/p/flex-rpc/wiki/FlexRPC_Help


原创粉丝点击