2013-02-15 2 views
0

원격 공유 객체를 사용하여 채팅 응용 프로그램의 sharedobject.send 메소드를 사용하여 클라이언트와 서버간에 데이터 메시지를 보내려고합니다. 문서를 이해하는 데 어려움을 겪고 있습니다. 내가 사용하려고 시도한 코드는 간단히 작동하지 않았습니다.원격 공유 객체 사용 방법

누군가 내게 관련 API 호출을 표시 할만큼 친절 할 수 있습니까? 그리고 제 코드를 면밀히 조사하고 제가 잘못 가고 있다고 말해 주시겠습니까?

감사합니다. 일부 코드가 클라이언트 측 샘플에서 누락처럼

는 클라이언트 측

import flash.net.NetConnection; 
import flash.events.NetStatusEvent; 
import flash.events.SyncEvent; 

var nc:NetConnection = new NetConnection(); 

nc.connect("rtmfp://fms/exampledomain"); 

nc.addEventListener(NetStatusEvent.NET_STATUS, netHandler); 

function netHandler(event:NetStatusEvent):void { 
    if (event.info.code == "NetConnection.Connect.Success") { 
     trace("Your Connected"); 

     //Creating the sharedobject 
     var my_so:SharedObject = SharedObject.getRemote("users", nc.uri, false); 

     my_so.connect(nc); 

     my_so.addEventListener(SyncEvent.SYNC, syncHandler); 

     my_so.setProperty("users"); 

     my_so.setDirty("users"); 

     function syncHandler(event:SyncEvent):void { 
      var changelist:Array = event.changeList; 
     } 

     my_so.send function sendMessage(str){ 

서버 측

application.onConnect(clientObj)() { 
    application.acceptConnection(clientObj) { 
     trace("connected up"); 
    } 

    var my_so = SharedObject.getRemote("users", false); 
    my_so.send("Hello user", "Its only a test"); 
} 

답변

1

질문을 편집 한 후, 그것은 보인다.

내가보기에, 예를 들어 작동시키기 위해 클라이언트 측 코드가 필요하지 않습니다. 클라이언트에서 직접 send() 메서드를 호출 할 수 있습니다. 하지만 작동하는지 테스트하려면 두 개의 클라이언트를 연결해야합니다.

NetConnection 또는 SharedObject의 경우 connect() 메서드를 호출하기 전에 이벤트 수신기를 추가해야합니다.

클라이언트간에 단순히 데이터를 공유하기 만하면 공유 객체에 send() 메쏘드를 사용하지 않고 단순한 속성을 사용할 필요조차 없습니다. 그러나 다음과 같은 점에 유의 :이 같은 그대로

my_so.setProperty("users"); 

실제로 키 users를 삭제한다 : 마지막으로

my_so.setProperty("users", null); 

, 당신은 매우 특별한 경우에 setDirty()를 호출 할 필요가 있지만 것 이 하나. SharedObjects와 데이터를 공유하는 방법에 대한 자세한 예제는 this answer을보십시오