我正在尝试将自定义回调处理程序添加到 p2p 应用程序中的 NetStream 客户端。问题是,当我添加这样的处理程序时,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";
}
添加上述处理程序后,当我连接时,不会调用 localControlStream 的 onPeerConnect 方法。当我删除该处理程序时,将调用 onPeerConnect 方法。
任何有一些建议/想法的人。显然问题出在 NetStream.client 上。
非常感激您的帮忙。
杰拉德