Уважаемые знатоки p2p/Обращаюсь к вам за консультацией и помощью в реализации не простого "один к одному" вещания, а "многие ко многим".
Создаю NetConnection
Код AS3:
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, onStatusEvent);
Ловлю NetConnection.Connect.Success и создаю стрим для публикации данных с nc.nearID
Код AS3:
private function onStatusEvent(e:NetStatusEvent):void
{
switch (e.info.code)
{
case "NetConnection.Connect.Success":
sendStream = new NetStream(nc, NetStream.DIRECT_CONNECTIONS);
sendStream.addEventListener(NetStatusEvent.NET_STATUS, onStatusEvent);
sendStream.client = {onPeerConnect:onPeerConnect};
sendStream.publish(nc.nearID);
break;
default:
break;
}
}
public function onPeerConnect(callerns:NetStream) : Boolean
{
return true;
}
Выше всё стандартно и понятно.
Далее при передаче коллекции nearID из других экземпляров FlashPlayer я начинаю слушать их, создавая стрим проигрывания по айдишнику каждого как farID.
Код AS3:
public function receiving(farIDList:Array):void
{
for (var i:int = 0; i < farIDList.length; i++)
{
ListenerFars(farIDList[i]);
}
}
private function ListenerFars(farID:String):void
{
recvStream = new NetStream(nc, farID);
recvStream.addEventListener(NetStatusEvent.NET_STATUS, onStatusEvent);
recvStream.play(farID);
recvStream.client = {msg:onMessageReceived};
}
private function onMessageReceived(msg:*):void
{
Log(msg);
}
Проблема заключается в том, что при более 2-х экземпрярах FlashPalyer клиентов каким-то магическим методом у некоторых срабатывает "безпричинно" NetStream.Connect.Closed через 3-5-8 секунд приблизительно (т.е. многие ко многим работает, только определенный промежуток времени, потом обрывается какой-то клиент). Нету закономерности.
Когда 2 клиента паблишат и слушают друг друга, то никакого обрыва нету.
Как уйти от таких обрывов?