Показать сообщение отдельно
Старый 03.03.2013, 02:52
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 2  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

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

Код AS3:
public class ReciverAPI extends Sprite {
 
private const SERVER_ADDRESS:String = "rtmfp://stratus.adobe.com/";
private const DEVELOPER_KEY:String = "ваш_ключ";
подключение с цирусу
Код AS3:
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS,ncStatus);
nc.connect(SERVER_ADDRESS+DEVELOPER_KEY);
создание вещания
Код AS3:
private function ncStatus(event:NetStatusEvent):void{
 
			txt.appendText('ncStatus'+event.info.code+"\n");
 
				trace(event.info.code);
 
				myPeerID = nc.nearID;
 
				if (event.info.code == 'NetConnection.Connect.Success' ) {
					initBroadcast();
 
				}
 
				trace("myPeerID: "+myPeerID);
		}
 
 
 
		private function initBroadcast():void {
 
				trace("initSendStream");
 
				txt.appendText("initBroadcast\n");
 
				broadcast = new NetStream(nc,NetStream.DIRECT_CONNECTIONS);
				broadcast.addEventListener(NetStatusEvent.NET_STATUS, broadcastHandler);
				broadcast.publish("channel");
 
 
				var broadcastClient:Object = new Object();
 
				broadcastClient.onPeerConnect = function(callerns:NetStream):Boolean {
 
					txt.appendText("broadcast onPeerConnect\n"+callerns.farID+"\n");
 
					farPeerID = callerns.farID;
 
					trace("onPeerConnect "+farPeerID);
 
					return true;
				}
 
				broadcast.client = broadcastClient;
 
				sendMyPeerId();
 
 
		}
функция sendMyPeerId - означает то что вам нужно либо передать либо сохранить полученный пир-адресс, по которому остальные будут подключаться для просмотра вещания.

в приемнике точно так же подключаетесь к цирусу, но вы не создаете вещание, а присоединяетесь к полученному
Код AS3:
myPeerID
примерно так
Код AS3:
public function active(peerId:String):void {
			txt.appendText(peerId+"\n");
 
			try {
				recvStream = new NetStream(nc,peerId);
 
				recvStream.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
				recvStream.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
				recvStream.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
				recvStream.play("channel");
 
				recvStream.client = this;
			} catch (e:Error) {
				txt.appendText("error"+e+"\n");
			} catch (e:SecurityError) {
				txt.appendText("SecurityError"+e+"\n");
			}
 
			txt.appendText("connection\n");
		}
Добавлено через 2 минуты
для полной связи между двумя клиентами нужно создавать для каждого вещание и множество слушателей.

Добавлено через 9 минут
И да... Есть множество людей у которых Р2Р не будет работать, примерно 30% от трафика нужно автоматически переводить на live
__________________
return this...