2010-12-02 4 views
1

私はAdobe Stratus(現在はCirrusに改名)を使用して、P2Pアプリケーションを構築しています。アプリケーション内では、NetStream.onPeerConnectコールバック関数を使用し、ピアが接続されるたびにトリガされると予想していました。しかし、それはいつも私の友人Aと一緒に失敗したが、不思議な友人Bは何の問題もなく呼び出された。NetStream.onPeerConnectがトリガーされるのを妨げる要因は何ですか?

私はこの問題の原因を考えていましたか?

ここにコードの外観を示します。

まず、NetConnectionを作成します。

netConnection = new NetConnection(); 
netConnection.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler); 
netConnection.connect(SERVER_ADDRESS+DEVELOPER_KEY); 

は第二に、正常に接続のNetConnection時のNetStreamを作成します。

private function netConnectionHandler(event:NetStatusEvent):void{ 

    switch (event.info.code){ 
     case "NetConnection.Connect.Success": 

      sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS); 
      sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler); 

      var sendObj:Object = new Object(); 
      sendObj.onPeerConnect = function(subscriber:NetStream) : Boolean { 

       trace("[onPeerConnect] far id: " + subscriber.farID); 
       return true; 
      } 
      sendStream.client = sendObj; 
      sendStream.publish("file"); 
      ...... 

第三に、ここで私は私を啓発する助けてください2つのピア

receivedStream = new NetStream(netConnection, farId); 
    receivedStream.client = this; 
    receivedStream.addEventListener(NetStatusEvent.NET_STATUS, incomingStreamHandler); 
    receivedStream.play("file"); 

との間の接続を構築する方法です。ありがとう!

答えて

1

私の友人Aは対称NATの背後にあることが判明しました。私は成功した接続を構築するためにTURNサーバーをセットアップすることを考えています。

関連する問題