Flex, как получить одноранговый идентификатор от удаленного пользователя, подключенного к моему потоку? - PullRequest
3 голосов
/ 21 февраля 2012

Я создаю p2p-видео-чат Cirrus. Моя текущая проблема заключается в том, как автоматически подключиться к подписчику, который подключился к моему потоку. После некоторого поиска в Google я обнаружил, что могу сделать это, используя следующую конструкцию:

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;
                        } 

Однако для этого я должен определить и получить идентификатор подписчика, чтобы включить его в функцию. Моя вторая проблема - как это сделать? Я пытаюсь сделать это с удаленным Shared Object, но я не знаю точно, как эта структура должна выглядеть в моем случае.

Надеюсь, кто-нибудь поможет мне с этими вопросами. Заранее спасибо!

1 Ответ

0 голосов
/ 10 ноября 2012

Я не уверен, какую архитектуру p2p-соединения вы собираетесь реализовать.Но просто чтобы узнать идентификатор подключенного партнера, вы можете попробовать это:

callerns.farID

внутри функции onPeerConnect.

...