p2p и с чем его едят

Уроки по PHP, Javascript и т.п.
Аватара пользователя
совесть
Разработчик
Разработчик
Сообщения: 156
Зарегистрирован: 22 дек 2009, 23:58

p2p и с чем его едят

Сообщение совесть »

итак, начнем.

для начала получим ключ разработчика, чтобы использовать эту технологию. ее можно получить бесплатно по адресу
http://labs.adobe.com/technologies/stratus/

создадим AS файл с названием Stratus.

итак, мы получили ключ. теперь давайте объявим сервер и ключ в нашей флешке через константы.

Код: Выделить всё

private const SERVER:String = 'rtmfp://stratus.rtmfp.net/';private const DEVKEY:String = 'ВАШ КЛЮЧ РАЗРАБОТЧИКА';
далее объявим переменные

Код: Выделить всё

                private var netConnection:NetConnection;        private var netGroup:NetGroup;        private var netStream:NetStream;        private var groupspec:GroupSpecifier;
итак, разберем переменные.

netConnection- переменная, отвечающая за подключение к p2p
NetStream- переменная, помогающая подключиться к юзеру/группе в п2п сети.
netGroup- переменная, отвечающая за подключение к группе.
groupspec- переменная, отвечающая за инфу для подключения к группе.

далее подключаемся к п2п сети.

Код: Выделить всё

                        netConnection = new NetConnection();            netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);            netConnection.connect(SERVER + DEVKEY); 
в функции netStatusHandler будет получаться вся инфа о п2п сети, то есть, удалось ли подключиться, какое сообщение получаем и т.п.

далее создаем настройки для подключения к группе, и подключаемся к ней.

Код: Выделить всё

function setupGroup():void {                        groupspec = new GroupSpecifier("НАЗВАНИЕ КОМНАТЫ К КОТОРОЙ ХОТИМ ПОДКЛЮЧИТЬСЯ");            groupspec.serverChannelEnabled = true;            groupspec.multicastEnabled = true;            groupspec.postingEnabled = true;            groupspec.routingEnabled = true;            groupspec.peerToPeerDisabled = false;                                netStream = new NetStream(netConnection, groupspec.groupspecWithAuthorizations());            netStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);        }
думаю в дополнительном объяснении это не нуждается, там всё понятно даже судя по названиям(у кого туго с английским, добро пожаловать в гугл).

а теперь самое интересное. обработка ответов, а именно функция netStatusHeandler.

Код: Выделить всё

function netStatusHandler(e:NetStatusEvent):void {                                    switch (e.info.code) {                case 'NetConnection.Connect.Success':                    setupGroup();                    break;                case 'NetStream.Connect.Success':                    // Create new NetGroup                    netGroup = new NetGroup(netConnection, groupspec.groupspecWithAuthorizations());                                        netGroup.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);                    break;                case 'NetGroup.Connect.Success':                                        break;                             case 'NetGroup.SendTo.Notify' :                              trace(e.info.message)//объект, который мы получили от члена группы.                              break;                default:                                }
e.info.code включает в себя результат ваших действий.
NetConnection.Connect.Success- если удалось подключиться к п2п сети.
NetStream.Connect.Success- если удалось подключиться к группе, то создаем переменную, отвечающую за всю инфу группы.
NetGroup.Connect.Success- если удалось подключиться к группе.

вот мы подключились. как отправлять данные? это делается просто. создаем функцию

Код: Выделить всё

public function sendData():void {                        var obj:Object = {text:"olol"};            netGroup.sendToAllNeighbors($obj);        }
отправка данных идет объектом. чтобы получить ответ от участника группы,
вот в принципе и всё. уже можно написать чат на p2p технологии.
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: p2p и с чем его едят

Сообщение bodnar »

Неплохо было бы добавить краткую справку по peer-to-peer впринципе, чтоб без лишних вопросов

И я что то слегка не уловил, у нас подключение все равно идет через сервер адоба? :roll:
Аватара пользователя
совесть
Разработчик
Разработчик
Сообщения: 156
Зарегистрирован: 22 дек 2009, 23:58

Re: p2p и с чем его едят

Сообщение совесть »

ну нужно же как-то объявлять юзеров.

остальная справка в хелпе. это основное. остальное в основном идет на получение данных.

могу урок для чата сделать
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: p2p и с чем его едят

Сообщение bodnar »

Лучше исходник самый простой выложи :lol:
Аватара пользователя
совесть
Разработчик
Разработчик
Сообщения: 156
Зарегистрирован: 22 дек 2009, 23:58

Re: p2p и с чем его едят

Сообщение совесть »

k3e.ru/olo.rar

держи. только там говнокод. но, думаю, разберешься.
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: p2p и с чем его едят

Сообщение bodnar »

Сразу вопрос, есть там какой-нибудь онлайн сервис, чтобы увидеть что там происходит у меня? Кто что прислал, кто присоединился, кто в какой комнате сидит? Так сказать админка.
Аватара пользователя
совесть
Разработчик
Разработчик
Сообщения: 156
Зарегистрирован: 22 дек 2009, 23:58

Re: p2p и с чем его едят

Сообщение совесть »

нету админки. комнаты создаются с клиента. кто сидит, смотри в NetGroup.

п2п сеть- эт клиент и сервер в 1. каждый человек является сервером и клиентом одновременно
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: p2p и с чем его едят

Сообщение bodnar »

Пару вопросов.
Насколько понял отправить конкретному пользователю (или нескольким пользователям из группы) нельзя?
Какую информацию можно получить о конкретном пользователе? Только peerID? пользователь не может создать где нибудь дополнительных полей (ну не знаю, в netConnection например) что бы эти поля могли получать другие пользователи по мере нужды?
Аватара пользователя
revizor
FL Team
FL Team
Сообщения: 1034
Зарегистрирован: 18 ноя 2009, 20:22

Re: p2p и с чем его едят

Сообщение revizor »

а вообще чего код ???
ТС хоть бы подписал для непонтливых ) комнаты ...статусы.... чат чтоли ?
Аватара пользователя
совесть
Разработчик
Разработчик
Сообщения: 156
Зарегистрирован: 22 дек 2009, 23:58

Re: p2p и с чем его едят

Сообщение совесть »

не уверен насчет дополнительных полей.

отправлять можно отдельному человеку.

$connection.sendToNeighbor
Ответить