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

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

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию [p2p] Проблема с организацией потоков

Здравствуйте.
Пишу р2р-шный камчат, проблемы возникают при созданию обратного слушателя "сидера" от "пира".

Сид
Код AS3:
public function initConnection():void{
 
			trace('initconnect');
 
			nc = new NetConnection();
			nc.addEventListener(NetStatusEvent.NET_STATUS,ncStatus);
			nc.connect(SERVER_ADDRESS+DEVELOPER_KEY);
		}
 
		public function ncStatus(event:NetStatusEvent):void{
 
			trace(event.info.code);
 
			myPeerID = nc.nearID;
 
			initSendStream();
		}
 
		public function initSendStream():void{
 
			trace("initSendStream");
 
			sendStream = new NetStream(nc,NetStream.DIRECT_CONNECTIONS);
			sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
			sendStream.publish(myPeerID);
 
			var sendStreamClient:Object = new Object();
 
			sendStreamClient.onPeerConnect = function(callerns:NetStream):Boolean{
 
 
				farPeerID = callerns.farID;
 
				trace("onPeerConnect "+farPeerID);
				initRecvStream();
				//var metaData:Object = new Object();
           		//metaData.title = "myStream";
           		//metaData.width = Camera.getCamera().width;
            	//metaData.height = Camera.getCamera().height;
 
			 	//sendStream.send("@setDataFrame", "onMetaData", metaData);
 
				return true;
			}
 
			sendStream.client = sendStreamClient;
 
		}
 
		public function initRecvStream():void{
 
			recvStream = new NetStream(nc,farPeerID);
			recvStream.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler2);
			recvStream.play("c-channel");
			var r = new Object();
			recvStream.client = r;
 
		}
 
		public function receiveSomeData(str:String):void{
			email.text=str;
		}
 
		public function sendSomeData():void{
			//sendStream.send("receiveSomeData",txtSendData.text);
			//txtSendData.text='';
		}
 
		public function netStatusHandler2(event:NetStatusEvent):void{
			//trace("reciver");
			//trace(event.info.code);
		}
		public function netStatusHandler(event:NetStatusEvent):void{
			trace(event.info.code);
 
			if (event.info.code == "NetConnection.Connect.Success") {
				trace('softid');
			 }
 
			 if (event.info.code == "NetStream.Publish.Start")
			 {
				 if (stats!='set')
				 {
					 stats='set';
 
 
           		sendStream.attachCamera( Camera.getCamera() );
           	 	sendStream.attachAudio( Microphone.getMicrophone() );
 
				softid = (_sharedObj.data.softid) ? _sharedObj.data.softid: "";
 
				var loader:URLLoader = new URLLoader(); 
 
				loader.addEventListener( Event.COMPLETE, servComplete );
 
				loader.dataFormat = URLLoaderDataFormat.VARIABLES;
 
				trace("***Publish start\n***");
				trace("SoftID -> "+softid);
				trace("StreamID -> "+nc.nearID);
 
				//loader.load( new URLRequest("http://localhost/demo/setid.php?softid="+softid+"&streamid="+nc.nearID+"&email="+email.text ) ); 
 
				}
			 }
 
 
		}
Пир
Код AS3:
function initConnection():void{
 
	trace('initconnect');
 
	if(peep!=""){
		farPeerID = peep;
	}		
	nc = new NetConnection();
	nc.addEventListener(NetStatusEvent.NET_STATUS,ncStatus);
	nc.connect(SERVER_ADDRESS+DEVELOPER_KEY);
}
 
function ncStatus(event:NetStatusEvent):void{
 
	trace(event.info.code);
 
	myPeerID = nc.nearID;
 
	txtFingerprint.text = myPeerID;
	initSendStream();
	initRecvStream();
 
}
 
function initSendStream():void{
 
	trace("initSendStream");
 
	sendStream = new NetStream(nc,NetStream.DIRECT_CONNECTIONS);
	sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
	sendStream.publish("c-channel");
 
	var sendStreamClient:Object = new Object();
 
	sendStreamClient.onPeerConnect = function(callerns:NetStream):Boolean{
 
		farPeerID = callerns.farID;
 
		trace("onPeerConnect "+farPeerID); 
 
		return true;
	}
 
	sendStream.client = sendStreamClient;
 
}
senders.addEventListener(MouseEvent.CLICK,sending);
 
function sending(eve:Event):void
{
	trace("sending");
	sendStream.send("receiveSomeData","sending");
}
 
function initRecvStream():void{
 
	var customClient:Object = new Object(); 
	customClient.onMetaData = metaDataHandler;
 
	recvStream = new NetStream(nc,farPeerID);
	recvStream.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
 
 
	recvStream.client = {onMetaData:ns_onMetaData, onCuePoint:ns_onCuePoint};
 
	recvStream.play(farPeerID);
	video.attachNetStream(recvStream);
 
	function metaDataHandler(infoObject:Object):void 
	{ 
		trace(infoObject.width); 
		trace(infoObject.height); 
	}
}
 
function ns_onMetaData(item:Object):void {
 
	trace("metaData");
 
 	video.width = item.width;
 	video.height = item.height;
 
	video.x = (stage.stageWidth - video.width) / 2;
 	video.y = (stage.stageHeight - video.height) / 2;
 
}
 
 
function ns_onCuePoint(item:Object):void {
 trace("cuePoint");
 trace(item.name + "\t" + item.time);
}
 
function onMetaData(info:Object):void {
    trace("width: " + info.width);
    trace("height: " + info.height);
}
 
function receiveSomeData(str:String):void{
 
}
 
function sendSomeData():void{
	//sendStream.send("receiveSomeData",txtSendData.text);
	//txtSendData.text='';
}
 
function netStatusHandler(event:NetStatusEvent):void{
	trace(event.info.code);
 
	if (event.info.code == "NetConnection.Connect.Success") {
 
 
     }
 
}
Цепь последовательности:
Сид получает от стратуса ИД записывает его в БД и начинает трансляцию.
Пир считывает БД подключается к Сид и начинает воспроизводить видеопоток.
Сид определивши подключение Пира создаёт для слушатель, который должен принимать и отдавать команды, свойства от/к Пира/у.

При моей реализации Сид сходит с ума, получая практически постоянно netStatusHandler2
__________________
return this...


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

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

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


 


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


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