amf相关
ruby服务端
config.ru
# rack-amf# http://adampetrie.com/working-with-amf-in-actionscript-3# http://help.adobe.com/zh_CN/as3/dev/WS9b644acd4ebe5999-2734bf3c124372a52ff-8000.htmlrequire 'rack/amf'use Rack::AMFclass User attr_accessor :usernameendclass TestService def sayHello 'Hello' end def getUser u = User.new u.username = "user" u end def add(num1, num2) num1 + num2 endendRack::AMF::Environment.register_service 'TestService', TestService.newRocketAMF::ClassMapper.define do |m| m.map :as => 'User', :ruby => 'User'endrun lambda {|env| [200, { 'Content-Type' => 'text/plain', 'Content-Length' => '16' }, ["Rack AMF gateway"] ] }rackup
// http://adampetrie.com/working-with-amf-in-actionscript-3// http://help.adobe.com/zh_CN/as3/dev/WS9b644acd4ebe5999-2734bf3c124372a52ff-8000.htmlpackage{import flash.display.Sprite;import flash.events.NetStatusEvent;import flash.net.NetConnection;import flash.net.Responder;public class NetConnectionExample extends Sprite {private var _netConnection:NetConnection;public function NetConnectionExample() {var remotingGateway:String = "http://localhost:9292";_netConnection = new NetConnection();_netConnection.addEventListener(NetStatusEvent.NET_STATUS, connectionHandler);_netConnection.connect(remotingGateway);//Make the call_netConnection.call("TestService.sayHello", new Responder(sayHelloSuccess, erroneousResult));_netConnection.call("TestService.getUser", new Responder(getUserSuccess, erroneousResult));_netConnection.call("TestService.add", new Responder(addSuccess, erroneousResult), 1, 2);}private function connectionHandler(ev:NetStatusEvent):void{if(ev.info.code == "NetConnection.Call.Failed"){trace("Unable to find gateway");}}private function sayHelloSuccess(obj:Object):void{trace(obj);}private function getUserSuccess(obj:Object):void{trace(obj.username);}private function addSuccess(obj:Object):void{trace(obj);}private function erroneousResult(obj:Object):void{trace("Call Failed");}}}