2010-12-02 72 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"); 
      ...... 

第三,這裏是我如何建立兩個對等

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

請幫賜教之間的連接。謝謝!

回答

1

事實證明,我的朋友A在對稱NAT後面。我正在考慮爲我們建立一個TURN服務器來建立一個成功的連接。

相關問題