Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.05.2012, 17:43
miki вне форума Посмотреть профиль Отправить личное сообщение для miki Найти все сообщения от miki
  № 1  
Ответить с цитированием
miki

Регистрация: Jan 2011
Сообщений: 46
По умолчанию 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 минут
подскажите пожалуйста...

Старый 07.05.2012, 18:17
Acrossfy вне форума Посмотреть профиль Отправить личное сообщение для Acrossfy Найти все сообщения от Acrossfy
  № 2  
Ответить с цитированием
Acrossfy
 
Аватар для Acrossfy

Регистрация: Feb 2009
Сообщений: 180
Вы для начала просто трейсить этот ивент пробовали? Он вообще срабатывает?

Добавьте также следущее в ивент:
Код 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;
	}
}


Последний раз редактировалось Acrossfy; 07.05.2012 в 18:18. Причина: Исправил теги
Старый 07.05.2012, 20:30
miki вне форума Посмотреть профиль Отправить личное сообщение для miki Найти все сообщения от miki
  № 3  
Ответить с цитированием
miki

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

Старый 08.05.2012, 13:40
Acrossfy вне форума Посмотреть профиль Отправить личное сообщение для Acrossfy Найти все сообщения от Acrossfy
  № 4  
Ответить с цитированием
Acrossfy
 
Аватар для Acrossfy

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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