FlexとRubyでrubyamfを使ってAMF通信
またしても前回に引き続き、AMF通信をします。w
今回はRubyです。
使用するモジュールはrubyamfです。
(ほかにもMidnightCoders WebORB for Railsというものもあるそうです。)
RubyAMF
- まずはRailsプロジェクトの作成
$ rails hellorubyamf $ cd hellorubyamf (Railsが入ってない方は、「$gem install rails」でインストールしてね)
- インストール
$ ruby script/plugin install http://rubyamf.googlecode.com/svn/tags/current/rubyamf
- Webサーバを起動し、ブラウザでチェック
$ ruby script/server
http://localhost:3000/rubyamf/gateway にアクセス!
正常にインストールされていれば、RubyAMFのロゴ画像が表示されます。
Rails
- app/controllersに移動し、service_controller.rbを作成
$ vi service_controller.rb class ServiceController < ApplicationController def returnName render :amf => params[0] + "さん、こんにちわ" end end
Flex
今回も前回のFlexのソースとほぼ一緒で、connection先が変わるだけ。
connection.connect("http://localhost:3000/rubyamf/gateway");
完全なソースは下記に記します
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*"> <mx:Script> <![CDATA[ import mx.controls.Alert; import flash.net.*; // データ送信 private function doRequest():void{ // レスポンダーを作成 var responder:Responder = new Responder(onSuccess, onFault); // コネクションの作成 var connection:NetConnection = new NetConnection(); // コネクト connection.connect("http://localhost:3000/rubyamf/gateway"); connection.objectEncoding = ObjectEncoding.AMF3; // ServiceクラスのreturnNameメソッドを呼び出す connection.call("Service.returnName", responder, nameText.text); } // データ取得成功 private function onSuccess(e:*):void{ // 返却値をAlertで表示 Alert.show(e.toString()); } // データ取得失敗 private function onFault(e:*):void{ Alert.show("通信失敗"); } ]]> </mx:Script> <mx:TextInput x="10" y="36" id="nameText" /> <mx:Button label="Submit" id="idTest" click="doRequest()" x="10" y="66"/> <mx:Label x="10" y="10" text="name" color="#FFFFFF"/> </mx:Application>