본문 바로가기

Examples/AIR

AIR 에서 LCDS 이용하기


AirWithLcdsExample.mxml======================================================================================

<?xml version="1.0" encoding="utf-8"?>
<!--====================================================
 * LCDS Messaging Service In AIR Application
 * @author : shallaa
 * @blog : http://shallaazm.tistory.com
=====================================================-->
<mx:WindowedApplication
 xmlns:mx="http://www.adobe.com/2006/mxml"
 layout="vertical"
 creationComplete="creationCompleteHandler()"
 >
 
 <mx:Style>
  Application
  {
   fontSize: 12;
  }
 </mx:Style>
 
 <mx:Script>
  <![CDATA[
   import mx.controls.Alert;
   import mx.messaging.messages.AsyncMessage;
   import mx.messaging.events.MessageFaultEvent;
   import mx.messaging.events.MessageEvent;
   import mx.messaging.channels.AMFChannel;
   import mx.messaging.ChannelSet;
   
   private var _channelSet:ChannelSet;
   private var _amfChannel:AMFChannel;
   /**
    * creationComplete handler
    * @private
    */
   private function creationCompleteHandler():void
   {
    _channelSet = new ChannelSet();
    _amfChannel = new AMFChannel("my-amf", "http://[도메인]:[포트]/[경로..]/messagebroker/amf");
    _amfChannel.pollingEnabled = true;
    _amfChannel.pollingInterval = 1000;
    _channelSet.addChannel(_amfChannel);
    
    producer0.channelSet = _channelSet;
    consumer0.channelSet = _channelSet;
    consumer0.subscribe();
   }
   /**
    * Button click handler
    * @private
    */
   private function clickHandler(e:MouseEvent):void
   {
    var button:Button = e.currentTarget as Button;
    
    switch(button)
    {
     case button0 : sendMessage(); break;
    }
   }
   /**
    * Producer send
    * @private
    */
   private function sendMessage():void
   {
    var message:AsyncMessage = new AsyncMessage();
    message.body.msg = textInput0.text;
    producer0.send(message);
    textInput0.text = "";
   }
   /**
    * Consumer MessageEvent handler
    * @private
    */
   private function messageHandler(e:MessageEvent):void
   {
    var messge:String = e.message.body.msg;
    textArea0.text += messge + "\n";
   }
   /**
    * Consumer MessageFaultEvent handler
    * @private
    */
   private function faultHandler(e:MessageFaultEvent):void
   {
    Alert.show(e.message.toString());
   }
  ]]>
 </mx:Script>
 
 <mx:Producer id="producer0" destination="airWithLcds" fault="faultHandler(event)"/>
 <mx:Consumer id="consumer0" destination="airWithLcds" message="messageHandler(event)" fault="faultHandler(event)"/>
 
 <mx:TextArea id="textArea0" width="100%" height="100%" selectable="false" editable="false"/>
 
 <mx:HBox width="100%">
  <mx:TextInput id="textInput0" enter="sendMessage()" width="100%" imeMode="KOREAN"/>
  <mx:Button id="button0" label="send" click="clickHandler(event)"/>
 </mx:HBox>
 
</mx:WindowedApplication>

=============================================================================================

services-config.xml==========================================================================

<channels>
        <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
            <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
            <properties>
                <polling-enabled>true</polling-enabled>
            </properties>
        </channel-definition>
</channels>

===============================================================================================

messaging-config.xml==========================================================================

<destination id="airWithLcds">
     <channels>
      <channel ref="my-amf"/>
     </channels>
</destination>

================================================================================================

저처럼 flex builder에서 Server technology 부분 설정 등등이 "성가시다"라고 생각이 드시는 까탈쟁이 분들은 위 방법으로 Web Application에서 사용하셔도 됩니다.