2010-12-02 16 views
1

Ich benutze Adobe Stratus (jetzt in Cirrus umbenannt), um eine P2P-Anwendung zu erstellen. In der Anwendung verwendete ich NetStream.onPeerConnect Callback-Funktion und erwartet, dass es jedes Mal ausgelöst wird, wenn ein Peer verbunden ist. Es hat aber immer mit meinem Freund A versagt, während Freund B die Funktion problemlos aufrufen konnte.Was verhindert, dass NetStream.onPeerConnect ausgelöst wird?

Ich habe mich gefragt, was könnte die Ursache für dieses Problem sein?

Hier sehen Sie, wie die Codestücke aussehen.

Zuerst erstellen Sie eine NetConnection.

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

Zweitens schaffen NetStream auf NetConnection- erfolgreich verbunden.

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"); 
      ...... 

Drittens ist hier, wie ich die Verbindung zwischen zwei Peers

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

Bitte helfen erleuchte mich bauen. Vielen Dank!

Antwort

1

Es stellt sich heraus, mein Freund A ist hinter einem symmetrischen NAT. Ich denke, einen TURN-Server für uns einzurichten, um eine erfolgreiche Verbindung aufzubauen.

Verwandte Themen