Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   RTMFP, обьясните по пальцам! (http://www.flasher.ru/forum/showthread.php?t=175847)

ashIndie 25.02.2012 23:05

немного разобрался.....
создал отдельно клиента и отдельно вещателя, после запуска в текстовое поле вставляю id и начинает вещать....плохо конечно но без задержек....
теперь вопрос....как сделать чтобы они автоматически обменивались ими и друг у другу подключались?

Добавлено спустя время:
Я могу узнать кто подключился ко мне и вещать данные с его камеры....но изначально как сделать чтобы они знали как друг к другу подключиться?....если peerID присваивается только во время подключения?
Silicium, Кстати спасибо большое, ты мне очень помог!!!

Silicium 25.02.2012 23:17

http://melnaron.net/development/peer...-chat-in-flash

Вы это внимательно прочли? Сорц смотрели?

ashIndie 25.02.2012 23:20

да но там php, хотелось бы обойтись без него

MikroAcse 26.02.2012 00:27

Там php - только регистрация...
Можно и без нее обойтись.

ashIndie 26.02.2012 00:28

Каким образом?

Добавлено через 43 минуты
есть еще кто не спит?....
последний штрих надо сделать....
но сижу над ним уже тоже долго

Добавлено через 2 часа 20 минут
Теперь проблема в другом. Тестировал все это дело на одном компьюетере, запуская просто в двух окнах браузера. Флешка сама на моем веб-сервере лежала, не локальном....Но щас другие люди не могут к ней подключиться..с других машин...в чем может быть проблема?

ЗлОй ПрОграММер 26.02.2012 20:20

чтобы не плодить тем отпишусь здесь, надеюсь автор не против всё же задачи одинаковые
мне нужно связать 2 флешки, делал всё по этой теме но нечего не вышло(флешка не видит когда к ней подключатся другая) пожалуйста подскажите в чём ошибка
Код AS3:

package 
 {
        import flash.display.MovieClip;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.events.MouseEvent;
        import flash.net.NetConnection;
        import flash.net.NetStream;
        import flash.events.NetStatusEvent;
        import flash.text.TextField;
        import flash.text.TextFormat;
 
        public class MainClass extends MovieClip
        {
                private const CirrusAddress: String = "rtmfp://p2p.rtmfp.net/";
                private const DeveloperKey: String = "xxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxx";
 
                private var netConnection: NetConnection = new NetConnection();
                private var nearPeerID: String;
                private var farPeerID: String;
 
                private var sendStream: NetStream;
                private var recvStream: NetStream;
 
                private var notificationText: TextField = new TextField();
 
                public function MainClass(): void
                {
                //----------------------------------------------------------------------
                        if (stage) Initialization()
                        else addEventListener(Event.ADDED_TO_STAGE, Initialization);
                //----------------------------------------------------------------------
                }
 
                private function Initialization(e: Event = null): void
                {
                //----------------------------------------------------------------------       
                        addNotificationText();
                //----------------------------------------------------------------------
                        netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
                        netConnection.connect(CirrusAddress, DeveloperKey);
                //----------------------------------------------------------------------
                        addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
                        removeEventListener(Event.ADDED_TO_STAGE, Initialization);
                //----------------------------------------------------------------------
                }
 
                private function mouseDown(e: MouseEvent): void
                {
                //----------------------------------------------------------------------
                        sendMessage("P2P");
                //----------------------------------------------------------------------
                }
 
                /*
                * В случае, если с Cirrus состоялось успешное соединение, у NetStatusEvent.NET_STATUS свойству info.code
                * будет присвоена строка «NetConnection.Connect.Success».
                */

                private function netStatusHandler(e: NetStatusEvent): void
                {
                //----------------------------------------------------------------------               
                        trace(e.info.code);
                        if (e.info.code == "NetConnection.Connect.Success")
                        {
                                nearPeerID = netConnection.nearID;
                                farPeerID = netConnection.farID;
                                initSendStream();
                        }
                        if (e.info.code == "NetStream.Publish.Start")
                        {
 
                        }
                //----------------------------------------------------------------------       
                }
 
                private function initSendStream(): void
                {
                //----------------------------------------------------------------------
                        sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS);
                        sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);       
                        sendStream.publish("media");
 
                        var sendStreamClient: Object = new Object();
                        sendStreamClient.onPeerConnect = function(farStream: NetStream): Boolean
                        {
                                initRecvStream(farStream.farID);
                                return true;
                        }
                        sendStream.client = sendStreamClient;
                //----------------------------------------------------------------------       
                }
 
                private function initRecvStream(peerID: String): void
                {
                //----------------------------------------------------------------------
                        recvStream = new NetStream(netConnection, peerID);
                        recvStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
                        recvStream.play("media");
                        recvStream.client = this;
                //----------------------------------------------------------------------
                }
 
                public function sendMessage(message: String): void
                {
                //----------------------------------------------------------------------
                        sendStream.send("recvMessage", message);
                        recvMessage(message);
                //----------------------------------------------------------------------
                }
 
                public function recvMessage(message: String): void
                {
                //----------------------------------------------------------------------
                        notificationText.appendText(message);
                //----------------------------------------------------------------------
                }
 
                private function addNotificationText(): void
                {
                //----------------------------------------------------------------------
                        var textFormat: TextFormat;
                //----------------------------------------------------------------------
                        textFormat = new TextFormat("Courier New", 20, null, true);
                        textFormat.align = "center";
                        notificationText.x = 0;
                        notificationText.y = 0;
                        notificationText.width = 800;
                        notificationText.height = 700;
                        notificationText.defaultTextFormat = textFormat;
                        notificationText.wordWrap = true;
                        notificationText.selectable = false;
                        addChild(notificationText);
                //----------------------------------------------------------------------
                }
 
        }
 
}


Silicium 26.02.2012 21:24

А кто к кому подключается? Запускаешь две флэшки - и они обе ждут подключения. Кто-то из ник должен первым приконнектиться к другому, а для этого ты должен создать слушающий поток с руками заданным farID, равным nearID первой запущенной флэшки

ЗлОй ПрОграММер 26.02.2012 21:44

а есть где нить в исходниках пример такого слушащего потока ? а то я уж голову сломал как это всё работает
Башка кипит уже, так что извиняйте если чушь несу, моя задача узнать nearID первой флешки и вбить его сюда ?
Код AS3:

private function initRecvStream(peerID: String): void
{
//----------------------------------------------------------------------
        recvStream = new NetStream(netConnection, peerID);
        recvStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
        recvStream.play("media");
        recvStream.client = this;
//----------------------------------------------------------------------
}


Silicium 26.02.2012 23:42

именно

ЗлОй ПрОграММер 28.02.2012 11:47

в общем сделал как вы сказали и всё получилось, я передавал координаты мышки из одной флешки в другую. Но вот вопрос если мышка хотя бы секунд 5 неактивна то возникает событие NetStream.Connect.Closed С чем это может быть связано ? если не ошибаюсь оно должно возникать когда одна из флешек фокус потеряет


Часовой пояс GMT +4, время: 20:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.