2012-05-21 2 views
2

FMS (rtmfp)를 사용하여 Netgroup에 연결합니다. Netgroup (reiceve NetStatusEvent "NetGroup.Connect.Success")에 연결할 수 있지만 그게 전부입니다. 아무 것도 게시 할 수 없거나 다른 사람이 Netgroup에 가입했는지 확인할 수 없습니다. NetStatusEvent는 실행되지 않습니다. 내가 놓친 게 있니? 여기 Netgroup 이벤트를 수신 할 수 없습니다.

코드입니다 :

당신은 스위치 블록에 "NetGroup.Posting.Notify"를 확인하고, 넷 클래스의 포스트 방법을 사용할 필요가
public function connect(url:String):void {     
    _nc = new NetConnection(); 
    _nc.client = this; 
    _nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 

    _nc.connect(url); 
} 

private function netStatusHandler(event:NetStatusEvent):void { 
    switch (event.info.code){ 
     case "NetConnection.Connect.Success":    
      createGroup(); 
      break;    
     case "NetGroup.Connect.Success":      
      //post msg to the group 
      var message:Object = new Object;      
      message.text = "Hello";     
      message.sender = _nc.nearID;      
      _netGroup.post(message); 
      break; 
     default:      
      trace("event.info.code: " + event.info.code);   
      break; 
    }    
} 

private function createGroup():void { 
    _groupSpecifier = new GroupSpecifier("test_group"); 
    _groupSpecifier.postingEnabled = true; 
    _groupSpecifier.multicastEnabled = true;    
    _groupSpecifier.serverChannelEnabled = true; 

    _netGroup = new NetGroup(_nc, _groupSpecifier.groupspecWithAuthorizations()); 
    _netGroup.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);   
} 

답변

1

!

private function netStatusHandler(event:NetStatusEvent):void { 
switch (event.info.code){ 
    case "NetConnection.Connect.Success":    
     createGroup(); 
     break;    
    case "NetGroup.Connect.Success":      
     break; 
    case "NetGroup.Posting.Notify" : 
     receiveMessage(event.info.message); 
     break; 

    default:      
     trace("event.info.code: " + event.info.code);   
     break; 
}    

}는 receiveMessage 기능에서 다음

:

private function receiveMessage(message:Object):void 
    { 
     trace(message.text) 
    } 

그리고 마지막으로 보내는 기능 :

private function sendMessage(txt:String):void 
    { 
     var message:Object = new Object(); 
     message.text = txt; 

     netGroup.post(message); 
    } 

지금 당신이 sendMessage 첨부를 호출 할 수 있습니다 ("텍스트") 때를 보내기 버튼을 누릅니다.

+0

. 유일한 이벤트는 NetGroup.Connect.Success입니다. netgroup에 메시지를 게시 할 때 어떤 이벤트도 수신되지 않습니다. –

+0

스위치 블록에서 수신 대기합니까? (내 방식을 대답에 추가) –

+0

음 ... 죄송합니다, 신중하게 코드를 확인하지 않았다. 귀하의 게시물 방법이 있습니다.죄송합니다. 왜 그걸 추적하지 않는지 알지 못합니다. ( –

1

메시지를 게시하도록 선택한 위치에 문제가있을 수 있습니다. Connect.sucess에서 게시하므로 인접 항목이 피어에 연결되어 있지 않습니다. 이웃 사람이 연결된 후에 만 ​​메시지가 다른 피어에 게시됩니다.

0

"NetGroup.Neighbor.Connect"라는 음성이 들리면 게시물()을 시작해야한다고 요구하는 작업을 완료하십시오. 그룹에 연결할 때 바로 게시물()을 발사하면 이웃 사람과 연결하기 전에 게시물을 발사 할 가능성이 있습니다. 그룹과 이웃 그룹에 연결하는 것은 동시에 발생하지 않습니다. P2P 연결은 메시지가 전체 그룹에 전파 될 수 있도록 이웃을 사용할 수 있다는 확인에 의존합니다.

post() 메시지를 받으려면 "NetGroup.Posting.Notify"를 청취해야합니다. 만든 메시지는 두 개의 정보가 첨부 된 메시지이라는 개체입니다. 이 시점에서 메시지을 가져 와서 텍스트 필드로 출력 할 수 있습니다.

나는 쓴 글을 기반으로 몇 가지 예제 코드를 게시했다. 게시물()을 만들기 전에 그룹 내의 이웃과의 연결을 확인할 때까지 기다리는 중입니다.

private function netStatusHandler(event:NetStatusEvent):void { 
    switch (event.info.code){ 
     case "NetConnection.Connect.Success":    
      createGroup(); 
      break;    
     case "NetGroup.Connect.Success":      
      connected = true; 
       break; 

     case "NetGroup.Neighbor.Connect": 
      //post msg to the group 
       var message:Object = new Object;      
       message.text = "Hello";     
       message.sender = _nc.nearID;      
       _netGroup.post(message); 

     case "NetGroup.Posting.Notify": 
      writeText(message.sender + ": " message.text); 
     default:      
       trace("event.info.code: " + event.info.code);   
       break; 
    }    
} 

이러한 클래스가 당신을 위해 할 수있는 일이 많이 있습니다. 텍스트 메시지에만 국한되지 않고 문자 그대로 모든 객체를 전달할 수 있습니다. 스트리밍 데이터는 처리 할 수 ​​있지만 특정 클래스가 있습니다. 내가 참조하고 추가로 도움이 될 것입니다

링크 : 내가 어떤 넷 이벤트를 수신 할 수없는 내 문제

GroupSpecifier

NetStatusEvent