플렉스로 만들기는 했지만, 뭐 모든 클라이언트 플랫폼에서 쉽게 만들 수 있습니다.

요아래에 있는 RESTful Web Service를 구축하셨다면 그것을 이용한 클라이언트가 필요할 것입니다.

게시판용 RESTful WebService만들기
http://mudchobo.tomeii.com/tt/345
http://mudchobo.tomeii.com/tt/346

그래서 구현해봤습니다.
우선 5가지 요청을 합니다.

1. 게시물 리스트를 받아오는 것(GET)
2. 게시물 1개의 데이터를 받아오는 것(GET)
3. 게시물 쓰기(POST)
4. 게시물 삭제(DELETE)
5. 게시물 수정(PUT)

핵심은 RESTful요청이 가능한 라이브러리입니다. 요아래를 참고하세요~

[Flex/AIR] RESTful WebService를 위한 Flex RestService Library!


이 라이브러리를 통해 RESTService요청을 합니다. (기존 Flex에 있는 HTTPService는 DELETE와 PUT이 안됩니다.)
[code]
<rest:RESTService id="boardService" method="GET"
        rootURL="http://localhost/BoardWS/resources/wsboards/" port="9080"
        result="resultBoardHandler(event)" fault="faultHandler(event)"/>
[/code]
이런식으로 요청하면 되겠죠? ^^

아래는 구현체 소스입니다.
허접해서 도움이 될지는 모르겠지만....-_-; 어쨌든 저의 삽질의 결정체니....-_-;

저 위에서 구현한 WebService를 띄워놓고, 이 클라이언트로 접속하면 잘 될겁니다.

사용자 삽입 이미지

 
Posted by 머드초보

댓글을 달아 주세요

  1. BlogIcon AccessDenied 2008.10.16 16:15  댓글주소  수정/삭제  댓글쓰기

    역시 좀 짱이군 ㅎㅎㅎ

 
이건뭐 설명이 필요없네요.
아까 전시간에 만든 WebService를 호출해봅시다.

전시간에 만들어 놓은 웹서비스
http://mudchobo.tomeii.com/tt/328

플렉스빌더를 실행합니다.
Air로 프로젝트를 하나 만듭니다.
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical">
   
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
           
            private function callWebService():void
            {
                helloWebService.sayHello(input.text);
            }
           
            private function resultHandler(event:ResultEvent):void
            {
                Alert.show(event.result.toString());   
            }
           
            private function faultHandler(event:FaultEvent):void
            {
                Alert.show(event.fault.message);   
            }
        ]]>
    </mx:Script>
   
    <mx:WebService id="helloWebService"
        wsdl="http://localhost:9080/HelloWebApp/HelloService?WSDL"
        useProxy="false"
        result="resultHandler(event)"
        fault="faultHandler(event)" />
       
    <mx:TextInput id="input" enter="callWebService()"/>
    <mx:Button id="button" label="Button" click="callWebService()"/>
       
</mx:WindowedApplication>
[/code]
wsdl부분에서만 주소를 WSDL파일 주소로 써주세요.
그 외에는 RemoteObject나 HTTPService와 같이 같은 방식으로 해주면 돼요.

다음엔 RESTful이 뭔지 좀 알아봐야겠습니다.

 
Posted by 머드초보

댓글을 달아 주세요

  1. BlogIcon 꽃녀 2008.09.23 09:23  댓글주소  수정/삭제  댓글쓰기

    왜 머드죠?
    진흙초보인가요?
    본문과 상관없는 내용 ㅈㅅ.;;

    • 머드초보 2008.09.23 10:02  댓글주소  수정/삭제

      아......-_-;
      http://ko.wikipedia.org/wiki/%EB%A8%B8%EB%93%9C_%EA%B2%8C%EC%9E%84
      머드라는 게임의 한장르가 있었습니다.
      MUD(Multi User Dungeon)!
      PC통신 때 해본사람만 아는 ^^
      직접 커맨드로 입력해서 동서남북으로 이동하고, 몬스터를 만나면
      '몬스터이름 공' 이런식으로 커맨드를 쳐주면 공격하고, 기술이름도
      쓰고 그러는 게임이 있었거든요 ^^

      그런 게임을 처음 접할 때 왠지 머드뒤에 초보라고 붙이면,
      거기 사람들이 많이 도와줄 것 같아서-_-;
      머드초보라고 지었는데 그 뒤로 계속 써왔네요 ^^
      중1때 처음 했으니...벌써....10년이 넘었군요 ㅠ

  2. BlogIcon 꽃녀 2008.09.23 12:50  댓글주소  수정/삭제  댓글쓰기

    중1이면 14살..
    그럼 머드님 나이가 24~25인가여?
    후덜덜덜...덜덜

    • 머드초보 2008.09.23 13:18  댓글주소  수정/삭제

      아.....대충 10년이라는 얘기였는데 ^^
      그래도 거의 근처에 맞추셨네요 ^^
      26살이에요 ^^
      꽃녀님은 왜 꽃녀인지 물어봐도 될까요? ^^

  3. BlogIcon 꽃녀 2008.09.23 16:07  댓글주소  수정/삭제  댓글쓰기

    헉.. 머드소년님이시네요...ㅜㅜ
    부럽삼
    전 광남할려다가 이상해서 꽃남 하려고 하다가 이상해서 꽃녀로 한거에요.히히

    • 머드초보 2008.09.23 16:23  댓글주소  수정/삭제

      소년이라뇨 ^^
      제가 얼굴에 +5나이 면상 아이템을 착용하고 있어서-_-;
      아하 그렇군요 ^^
      사실 전 처음에 여자분이신줄 알았어요-_-;

    • BlogIcon 열이아빠 2008.10.09 23:27  댓글주소  수정/삭제

      그런 사연이 있었군요.
      덕분에 머드초보님에 대한 정보도
      얻어가네요..ㅎㅎ

    • 머드초보 2008.10.10 09:08  댓글주소  수정/삭제

      아넵 ^^ 사실 방문을 유도한....-_-;
      위자드팩토리 런칭파티가시나요? ^^
      저는 치과때문에 못가는데-_-;

 
Toad나 GOLDEN32를 사용하기 위해서는 오라클 클라이언트를 설치해야하는데 이걸 설치하고 GOLDEN32로 접속해서 쿼리를 날려서 검색하면 한글이 나와야 하는 부분이 ???로 나오게 됩니다.

사용자 삽입 이미지

원래 2008년 7월 12일 이라고 나와야하는데-_-; 안 나옵니다.
이게 서버쪽 케릭터셋이랑 클라이언트 케릭터셋이 안맞아서 그런데요. 서버는 한글이 된다면 KOREAN_KOREA.KO16KSC5601이걸로 되어있을껍니다-_-; 저도 오라클은 잘 모르지만 이게 맞는 것 같습니다.
그래서 클라이언트쪽에도 맞춰줘야합니다.

윈도우에 설치하셨다면 NLS_LANG을 추가하면 됩니다. 어디다가 하냐면 레지스트리에다가 합니다.
시작 -> 실행 -> regedit 실행

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
여기로 찾아가서 ORACLE에 오른쪽 버튼 누르고, 새로만들기 -> 문자열값 하고
NLS_LANG이라고 씁시다.
더블클릭해서 값을 KOREAN_KOREA.KO16KSC5601이라고 합시다.

시도는 안해봤는데 환경변수로 지정해도 될 듯 합니다.
NLS_LANG=KOREAN_KOREA.KO16KSC5601



사용자 삽입 이미지
오....한글이 나와요!!!!


 
Posted by 머드초보

댓글을 달아 주세요

 

이번에는 클라이언트를 보겠습니다.

참고로 예제로 배우는 플렉스2에 있는 CODE7_13을 참고했습니다.
(틀만 가져다가 썼습니다 ^^)
FLEX3 BETA2에서 테스트해봤습니다.




클라이언트(FLEX)

ChatClient_Flex.mxml
[code]<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 creationComplete="initApp()">
 
 <mx:Script>
  <![CDATA[
   private var socket:Socket = new Socket();
   [Bindable]
   public var userId:String;
   
   private function initApp():void {
    currentState = "logon";
   }
   
   public function logon():void {
    socket = new Socket("127.0.0.1", 10001);
    socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
    userId = tUserId.text;
    socket.writeUTFBytes(userId + "\n");
    socket.flush();
    currentState = "chat";
   }
   
   private function socketDataHandler(event:ProgressEvent) :void {
          var str:String = socket.readUTFBytes(socket.bytesAvailable);         
          trace(str);
          trace("음");
          var trimstr:String = str.substr(0, str.indexOf("\r\n"));
          log.text += trimstr + "\n";
      }
        
   public function send():void {
    socket.writeUTFBytes(msg.text + "\n");
                socket.flush();
                msg.text = "";
                
   }
  ]]>
 </mx:Script>
 
 <mx:Panel id="panel" width="100%" height="100%" verticalAlign="middle"
  horizontalAlign="center">
  <mx:ControlBar id="cb" height="44" />
 </mx:Panel>
 
 <mx:states>
 
  <mx:State name="logon">
   <mx:AddChild relativeTo="{panel}">
    <mx:HBox>
     <mx:Label text="User Id:" />
     <mx:TextInput id="tUserId" enter="logon()" />
     <mx:Button label="Logon" click="logon()" />
    </mx:HBox>
   </mx:AddChild>
  </mx:State>
 
  <mx:State name="chat">
   <mx:SetProperty target="{panel}" name="title"
    value="접속자 ID : [{userId}]" />
   <mx:AddChild relativeTo="{panel}">
    <mx:TextArea id="log" width="100%" height="100%" editable="false"/>
   </mx:AddChild>
   <mx:AddChild relativeTo="{cb}">
    <mx:HBox width="100%" paddingTop="0" paddingBottom="0">
     <mx:TextInput id="msg" enter="send()" width="100%" />
    </mx:HBox>
   </mx:AddChild>
  </mx:State>
 
 </mx:states>
 
</mx:Application>
[/code]
처음에 소켓이 조금 헷깔렸는데-_-; 이제 좀 알것같네요.
우선 아이디를 입력하고 로그인을 클릭하면 logon함수를 실행하는데 socket에 이벤트리스너를 등록해요.
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
이거를 등록하게 되면, 서버쪽에서 데이터를 받게 되면 이벤트가 발생되는데 socketDatahandler라는 함수를 호출하라는 얘기죠.
서버가 데이터를 던져주게되면 저함수를 호출해서 readUTFBytes를 호출하면 데이터를 받아올 수 있죠.

※readMultiByte(socket.bytesAvailable, "euc-kr") 이렇게하면
서버쪽에서 UTF-8로 안만들어도 되는데요.
UTF-8이 대세기때문에-_-; UTF-8을 활용합시다-_-;


사용자 삽입 이미지

사용자 삽입 이미지



서버
http://mudchobo.tomeii.com/tt/152
 
Posted by 머드초보

댓글을 달아 주세요

  1. BlogIcon chichs 2008.03.26 17:29  댓글주소  수정/삭제  댓글쓰기

    안녕하세요~
    블로그에 막 입성한 초보블로거라서 잘몰라 요래저래 하다보니 트랙백이 갔네요;;
    요새 플렉스를 열심히 배우고 있어서..ㅎㅎ
    이 글을 고대로 퍼가려다가;; (그런건안데나;;)

    암튼.. 좋은정보 감사하구요~ 앞으로 자주 올께요^^

    • 머드초보 2008.03.27 08:28  댓글주소  수정/삭제

      안녕하세요 ^^ 반갑습니다 ^^
      저도 시작한지 이제 겨우 9개월밖에 안되서 ^^
      저는 트랙백거는거 한 3달만에 터득한 것 같은데 대단하십니다 ^^
      글 퍼가셔도 되는데 출처만 남기시면 돼요 ^^
      그럼 앞으로 블로그를 잘 이끌어나가세요 ^^

  2. 낭만공돌이 2008.05.01 01:40  댓글주소  수정/삭제  댓글쓰기

    적어주신 예제. 간단하고 이해하기 쉬워서 너무 잘 보았습니다!
    다만 한가지 질문이 있는데.
    client 단에서 첫번째로 보낸 메시지를 userID 로 받아서 "접속한 사용자의 ID는 xxx 입니다."
    라고 뿌려주시는 것 같은데.

    저는 아무래도 그 첫번째 메시지가 계속
    <policy-file-request/>
    인 것 같습니다.
    덕분에 첫번째 채팅 메시지가 ID로 인식되는군요 ㅠ

    이거 어떻게 해야 해결될까요..

    인터넷을 뒤져서
    classdomain.xls 파일을 만들라는 조언도 봤는데, 그대로 해도 잘 안되는군요;;;;
    ㅠㅠ

    혹시 도와주실 수 있을까요...ㅠ

    • 머드초보 2008.05.07 18:07  댓글주소  수정/삭제

      아....무슨얘기인지 잘 모르겠네요-_-;
      접속한 아이디라면...아이디를 그냥 서버에 넘겨주면 될듯한데요
      서버단에서 처리해야할 듯 합니다 ^^

  3. jun 2008.06.02 18:53  댓글주소  수정/삭제  댓글쓰기

    crossdomain 문제입니다 ..

    서버단에서 크로스 도매인 문서를 보내주고

    서버에서 접속을 끊어야 합니다

  4. calmtot 2009.03.06 16:42  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 잘 보고 갑니다~~ 고마워요 ^^ ㅋ

  5. 김경순 2009.03.10 16:02  댓글주소  수정/삭제  댓글쓰기

    고맙습니다. 저도 플랙스 채팅 프로그램을 Client/Server로 만드는 중인데 좋은 자료여서
    참고하도록 하겠습니다. 감사합니다.

    • 머드초보 2009.03.13 12:12  댓글주소  수정/삭제

      아넵 도움이 되셨다니 다행이네요^^
      방문해주셔서 감사해요~ ^^

  6. 쿨해요 2010.07.18 19:37  댓글주소  수정/삭제  댓글쓰기

    굿입니다.