2010-11-02 1 views
1

Я пытаюсь добавить собственный обработчик обратного вызова к клиенту NetStream в приложении p2p. Проблема заключается в том, что когда я добавляю такой обработчик, клиент NetStream не работает так, как раньше. Кажется, что объект NetStream.client изменен. Я знаю, что объект по умолчанию - это. Но изменение клиента на это не решает проблему.Проблема с обработчиком обратного вызова NetStream.client

RemoteControlStream - это входящий поток. И поток LocalControl это поток публикуется

Это localControlStream, который не отправить одноранговой, и получил в качестве remoteControlStream:

private function initLocalControlStream():void{ 
    localControlStream = new NetStream(nc, NetStream.DIRECT_CONNECTIONS); 
    localControlStream.addEventListener(NetStatusEvent.NET_STATUS, localControlHandler); 
    localControlStream.publish(myPeerID+"control"); 

    var localControlStreamClient:Object = new Object(); 

    localControlStreamClient.onPeerConnect = function(callerns:NetStream):Boolean{ 
      txtTest.text = "peer connected"; 
      if(side=="host"){ 
       farPeerID = callerns.farID; 
       if(!allreadyConnected){ 
        initRemoteControlStream(); 
        allreadyConnected = true; 
       } 
      } 

      return true; 
    } 
    localControlStream.client = localControlStreamClient; 
} 

Это NetStream, который приема потока:

private function initRemoteControlStream():void{ 
    txtTest.text = "setting up remote stream"; 
    if(side=="client"){ 
      farPeerID = this.parameters.hostFingerprint; 
    } 

    remoteControlStream = new NetStream(nc, farPeerID); 
    remoteControlStream.addEventListener(NetStatusEvent.NET_STATUS, remoteControlHandler); 

    remoteControlStream.client.test = new function():void{ 
      txtTest.text = "Callback handler working"; 
    } 

    remoteControlStream.play(farPeerID+"control"); 

    remoteControlStream.client = this; 
} 

добавить обработчик к remotecControlStream, как это (как описано выше):

remoteControlStream.client.test = new function():void{ 
    txtTest.text = "Callback handler working"; 
} 

Метод onPeerConnect из localControlStream не дозвонились, когда я подключаю при добавлении выше обработчик. Когда я удаляю этот обработчик, вызывается метод onPeerConnect.

Любой, у кого есть советы/идеи. Очевидно, проблема заключается в NetStream.client.

Ваша помощь очень ценится.

Gerard

ответ

3

это стратус, правда? я использовал следующую модель: на NetStatusEvent.NET_STATUS'NetConnection.Connect.Success' из NetConnection расположены Main.connection я назвал следующую функцию статического Streams класса:

`  public static function initOut(): void { 
      streamOut = new NetStream(Main.connection, NetStream.DIRECT_CONNECTIONS); 
      var peerConnected:Object = new Object(); 
       peerConnected.onPeerConnect = function(subscriberStream : NetStream) : Boolean { 
        var oo:RecievingObject = new RecievingObject(); 
        subscriberStream.client = oo; 
        if(!streamIn){ initIn((subscriberStream as NetStream).farID); }      
        return true; 
       } 
      streamOut.client = peerConnected;    
      streamOut.addEventListener(NetStatusEvent.NET_STATUS, onOutStatus);    
      streamOut.attachCamera(Camera.getCamera()); 
      streamOut.attachAudio(Microphone.getMicrophone()); 
      streamOut.publish('media'); 
     }` 

вот initIn функции:

 public static function initIn(id: String): void { 
     streamIn = new NetStream(Main.connection, id); 
     streamIn.client = new RecievingObject(); 
     streamIn.addEventListener(NetStatusEvent.NET_STATUS, onInStatus); 
     streamIn.receiveVideo(true); 
     streamIn.receiveAudio(true); 
     streamIn.play('media'); 
     VideoWindow.initIn(streamIn); 
     Mixer.initSound(streamIn); 
    } 

и RecievingObject класса:

public class RecievingObject extends Object 
{ 

    public function RecievingObject() 
    { 

    } 

    public function message(str: String):void { 
     ChatWindow.addText('>> ' + str); 
    } 

    public function onPeerConnect(ns: NetStream): Boolean { 
     // trace(ns.farID); 
     return true; 
    } 

} 
+0

Спасибо www0z0k, ваш ответ выглядит многообещающим. Я попробую, и я отчитаюсь =) – Gerard

+0

Я реализовал часть, которая мне нужна в моем проекте, и работает отлично. Большое спасибо! – Gerard

 Смежные вопросы

  • Нет связанных вопросов^_^