Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   p2p чат (http://www.flasher.ru/forum/showthread.php?t=179099)

miki 06.05.2012 17:43

p2p чат
 
Привет.
Делаю чат на технологии p2p.
Все почти готово, пользователи могут переписыватся.
Поставил себе задучу, оповещать о входе нового пользователя... и застряг на этоп этапе.
Делаю так:
Код AS3:

public function inti(event:Event):void
{
        netConnection = new NetConnection();
        netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
        netConnection.connect(SERVER + DEVKEY);
}
 
public function setupGroup():void
{
        groupspec = new GroupSpecifier(GROUP);
        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);
}               
 
public 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':
                        sendMessage(this.userName + " вошел в чат");
 
                break;
                case 'NetGroup.Posting.Notify' :
                        onReceiveMessage(e.info.message);//объект, который мы получили от члена группы.
                break;
                default:
                break;
        }
}
public function sendMessage(text:String = ""):void
{
        var mes:Object = new Object()
        mes.user = this.userName;
        mes.text = text;
        mes.sequnce = this._sequence++;
        mes.sender = netConnection.nearID;
        netGroup.post(mes);
}

Но не работает. Помогите пожалуйста.

Добавлено через 5 часов 17 минут
ничто не знает?

Добавлено через 10 часов 19 минут
подскажите пожалуйста...

Acrossfy 07.05.2012 18:17

Вы для начала просто трейсить этот ивент пробовали? Он вообще срабатывает?

Добавьте также следущее в ивент:
Код AS3:

        case 'NetGroup.Connect.Rejected':
        case 'NetGroup.Connect.Failed':
                trace('epic fail');
                break;

А мониторить добавление новых юзеров в группу можно так:
Код AS3:

function onStatus(event:NetStatusEvent):void
{
        switch (event.info.code)
        {
                case 'NetGroup.Neighbor.Connect':
                        trace('new user connected');
                        break;
                case 'NetGroup.Neighbor.Disconnect':
                        trace('user has left');
                        break;
        }
}


miki 07.05.2012 20:30

ивент срабатывает, проверял.
Мониторить не выход, так как там таймаут стоит маленький, тоисть даже если юзер не закрое вкладку, произойдет NetGroup.Neighbor.Disconnect в опредиленный момент (не знаю почему так???)
Можно конечно поизвращатся, и сделать какой-то масив и проверять по событии NetGroup.Neighbor.Connect - если pearID там нету, то значит зашел новый, но тут другая проблемма - по событии NetGroup.Neighbor.Connect я не буду знать ник-нейм этого соседа. Как бы с это выйти????
И вообще, нормальный вопрос - когда можно начинать посылать группе сообщения, после какого события???

Acrossfy 08.05.2012 13:40

Если ивент срабатывает, значит проблема в вашем sendMessage. При каких условиях функция работает или не работает? Вы пробовали трейсить из ивента this.userName?


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

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