Что мешает запуску NetStream.onPeerConnect? - PullRequest
1 голос
/ 02 декабря 2010

Я использую Adobe Stratus (теперь переименованный в Cirrus) для создания p2p-приложения.Внутри приложения я использовал функцию обратного вызова NetStream.onPeerConnect и ожидал, что она будет срабатывать каждый раз, когда подключен узел.Тем не менее, это всегда не удавалось с моим другом A, в то время как странному другу B удалось вызвать функцию без каких-либо проблем.

Мне было интересно, что может быть причиной этой проблемы?

Вот какфрагменты кода выглядят следующим образом.

Во-первых, создайте NetConnection .

netConnection = new NetConnection();
netConnection.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler);
netConnection.connect(SERVER_ADDRESS+DEVELOPER_KEY);

Во-вторых, создайте NetStream после успешного подключения NetConnection.

private function netConnectionHandler(event:NetStatusEvent):void{

    switch (event.info.code){
        case "NetConnection.Connect.Success":

            sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS);
            sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler);

            var sendObj:Object = new Object();
            sendObj.onPeerConnect = function(subscriber:NetStream) : Boolean {

                trace("[onPeerConnect] far id: " + subscriber.farID);
                return true;
            } 
            sendStream.client = sendObj;
            sendStream.publish("file");
            ......

В-третьих, вот как я строю связь между двумя пирами

    receivedStream = new NetStream(netConnection, farId);
    receivedStream.client = this;
    receivedStream.addEventListener(NetStatusEvent.NET_STATUS, incomingStreamHandler);
    receivedStream.play("file");

Пожалуйста, помогите просветить меня.Спасибо!

1 Ответ

1 голос
/ 04 декабря 2010

Оказывается, мой друг А находится за симметричным NAT. Я подумываю настроить сервер TURN для создания успешного соединения.

...