我正在创建一个 p2p Cirrus 视频聊天。 我当前的问题是如何自动连接到连接到我的流的订阅者。经过一番谷歌搜索后,我发现我可以使用下一个构造来完成:
var clientObject:Object = new Object();
clientObject.onPeerConnect = function(callerns:NetStream):Boolean{
return true;
}
我的流:
发送流:
private function initSendNetStream():void{
trace("initSendStream");
sendStream = new NetStream(nc,NetStream.DIRECT_CONNECTIONS);
sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusEvent);
var clientObject:Object = new Object();
clientObject.onPeerConnect = function(callerns:NetStream):Boolean{
return true;
}
sendStream.client = clientObject;
sendStream.attachCamera(cam);
sendStream.attachAudio(mic);
sendStream.publish('video');
log('Net Stream publish start');
}
和接收流:
private function addContact(peerID:String):void {
var nc2:NetConnection = new NetConnection();
nc2.addEventListener(NetStatusEvent.NET_STATUS, function (event:NetStatusEvent):void {
trace('NetConnection status event (2): ' + event.info.code);
var receiveNS:NetStream = new NetStream(nc2, /*ContactPeerID.text*/ peerID);
receiveNS.addEventListener(NetStatusEvent.NET_STATUS, netStatusEvent);
receiveNS.play('video');
var video:Video = new Video();
video.attachNetStream(receiveNS);
var uic:UIComponent = new UIComponent();
uic.width = 320;
uic.height = 240;
uic.addChild(video);
uic.toolTip = txtData.selectedItem.name;
VideoStack.addChild(uic);
//Clean ContactPeerID form
ContactPeerID.text = '';
});
nc2.connect(SERVER_ADDRESS+DEVELOPER_KEY);
}
我的想法是在这个结构中添加联系人功能:
var clientObject:Object = new Object();
clientObject.onPeerConnect = function(callerns:NetStream):Boolean{
return true;
}
但是,为了做到这一点,我应该检测并接收订阅者的 ID 以将其放入函数中。 我的第二个问题 - 如何做到这一点?我正在尝试使用远程共享对象来解决这个问题,但我不知道这个结构在我的情况下应该是什么样子。
希望有人能帮我解决这个问题。先感谢您!
最佳答案
我不确定您要实现什么 p2p 连接架构。 但只是为了找出已连接对等点的 ID,您可以尝试这样做:
callerns.farID
在 onPeerConnect 函数中。
关于apache-flex - Flex,如何从连接到我的流的远程用户获取对等 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9370805/