NetStream.client пользовательская проблема обработчика обратного вызова
Я пытаюсь добавить пользовательский обработчик обратного вызова для клиента NetStream в приложении p2p. Проблема в том, что когда я добавляю такой обработчик, клиент NetStream не работает так, как раньше. Кажется, объект 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
1 ответ
Это стратус, верно? я использовал следующую модель: на 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;
}
}