我想在p2p應用程序中將自定義回調處理程序添加到NetStream客戶端。問題是,當我添加這樣一個處理程序時,NetStream客戶端不能像以前那樣運行。看來NetStream.client對象已更改。我知道默認對象是這個。但將客戶更改爲此並不能解決問題。NetStream.client自定義回調處理程序問題
remoteControlStream是傳入流。而本地控制流被髮布
這就是會被對方發送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。
非常感謝您的幫助。
傑拉德
由於www0z0k,你的答案看起來很有希望。我會嘗試一下,我會回報=) – Gerard 2010-11-02 12:26:50
我在我的項目中實現了我需要的部分,並且完美地工作。非常感謝! – Gerard 2010-11-02 14:35:23