2011-10-01 5 views
0

그래서 내가 아직도 원격 공유 개체를 만들 수 있지만이 변경 사항에 대한 알림을 메신저 읽을 수없는 붙어있어. 메신저 트렁크 버전의 red5를 사용하고 플렉스 4.0을 플래시 빌더와 함께 사용합니다. 디버그에서 나는 changeLog가 rso의 변경된 값의 이름을 가지고 있음을 알 수있다. 그러나 객체 자체는 정의되지 않은 값을 갖는다.rso. 내가 만들 수 있지만 읽을 수 없습니다

현재 메신저 로컬 Windows 컴퓨터에서 작동하지만 우분투 서버 10.04에서 모든 것을 시도하고 같은 결과를 얻었습니다. 나는 방에 연결하여 공유 객체를 만들고 모든 클라이언트에 그에 대해 알린다. 그러나 rso의 값을 변경 한 사용자 만이 한 번 값을 읽을 수 있고 다른 값은 정의되지 않은 값을 읽을 수있다. 아무도이 문제와 관련하여 경험이 있습니까? 이것이 3 주 동안 나를 미치게 만들었 기 때문에 어떤 도움을 주시면 감사하겠습니다. rso에 대한 모든 자습서를 읽고 어떤 해결책을 얻을 수 없습니다. 나는 지속적이고 지속성이 없으며, 서버와 클라이언트에 의해 시작되었지만 항상 같은 결과를 얻는다.

내 코드는 클라이언트 측에서있다 :

protected function application1_creationCompleteHandler(event:FlexEvent):void { 
       var room_id:Number = vars("room"); 
       connection = new NetConnection(); 
       connection.connect("rtmp://127.0.0.1/video/" + room_id); 
       connection.addEventListener(NetStatusEvent.NET_STATUS, onConnected); 
       connection.client = this; 
      } 

private function onConnected(event:NetStatusEvent) : void { 
       if(event.info.code == "NetConnection.Connect.Success") { 

        so = SharedObject.getRemote("video", connection.uri, true); 
        so.addEventListener(SyncEvent.SYNC, onSync); 
        so.connect(connection); 


       } else { 
        Alert.show("Unsuccessful Connection", "Information"); 
       } 
private function onSync(event:SyncEvent):void { 
      if(so.data["video"] != undefined) 
      Alert.show(so.data["video"].toString(), "Information"); 
      } 

서버 측에 난이 :

내가 콘솔 출력을하고 RSO를 볼 수 없습니다 클라이언트 측에서 리스너
ISharedObject so; 
    IServiceCapableConnection iconn; 
    public static IScope iroom; 

    /** {@inheritDoc} */ 
    @Override 
    public boolean connect(IConnection conn, IScope scope, Object[] params) { 

     iconn = (IServiceCapableConnection)conn; 

     if (!super.connect(conn, scope, params)) { 
      return false; 
     } 

     System.out.println("Connected True"); 

     return true; 
    } 

    /** {@inheritDoc} */ 
    @Override 
    public void disconnect(IConnection conn, IScope scope) { 
     super.disconnect(conn, scope); 
    } 
@Override 
    public boolean roomStart(IScope room) { 
     if (!super.roomStart(room)) 
      return false; 
     createSharedObject(room, "video", true); 
     so = getSharedObject(room, "video"); 
     System.out.println("Room created succesfully"); 
     ISharedObjectListener listener = new SOEventListener(); 
     so.addSharedObjectListener(listener); 

     return true; 
    } 

현재 값은 무엇입니까? 비록 red5 서버의 persistence rso 파일을 검사하고 모든 것이 작동하는 것처럼 보이지만 모든 클라이언트에 대해 값을 읽을 수있는 기회는 누락되었습니다. 나는 어떤 도움을 주셔서 감사합니다. 감사합니다

답변

0

큰 문제가 그리 크게 나타나지 않습니다. 인코딩 문제는 AS3 이후 AMF3이며 기본적으로 AMF0으로 인코딩을 변경하면됩니다.

connection = new NetConnection(); 
connection.objectEncoding = ObjectEncoding.AMF0; 
connection.connect("rtmp://127.0.0.1/video/" + room_id); 

그 누구에게 도움이되기를 바랍니다. 왜냐하면 어떻게 든 인터넷상의 이러한 것들에 대한 많은 정보가 없기 때문입니다.

관련 문제