2012-04-18 9 views
2

Мы работаем с сервером Cumulus, чтобы сделать живой голос и текстовый чат.NetStream.send не работает с NetGroup в RTMFP

Настройка такова, что каждый клиент может отправлять данные друг другу в одной и той же NetGroup через group.post(). К сожалению, эта функция чрезвычайно медленная (по крайней мере, половина с половиной задержки), поэтому мы переключились на использование NetStream.send для вызова функций на других клиентах, передавая данные через это. Это работает почти мгновенно.

Однако мы сейчас пытаемся создать отдельные чаты с использованием разных NetGroups. Но при этом NetStream.send() больше не работает, функции никогда не вызываются на других клиентах, и никакие голосовые данные не передаются. В принципе, публикация NetStream, похоже, больше не работает.

Мы имеем следующие установки, чтобы установить Netgroup и публикации потока на каждом клиенте:

var gspec:GroupSpecifier = new GroupSpecifier("Group1"); 
gspec.multicastEnabled = true; 
gspec.postingEnabled = true; 
gspec.serverChannelEnabled = true; 
gspec.objectReplicationEnabled = true; 
gspec.routingEnabled = true; 

_group = new NetGroup(_netConnection, gspec.groupspecWithAuthorizations()); 
_group.addEventListener(NetStatusEvent.NET_STATUS, handleNetGroupStatus); 

_sendStream = new NetStream(_netConnection, gspec.groupspecWithAuthorizations()); 
_sendStream.addEventListener(NetStatusEvent.NET_STATUS, handleNetStreamStatus); 
_sendStream.client = this; 
_sendStream.attachAudio(_mic); 
_sendStream.publish("media"); 

И следующий код используется для прослушивания «медиа» поток:

case "NetGroup.Neighbor.Connect": 
    var netStream :NetStream = new NetStream(_netConnection, p_netStatusEvent.info.peerID); 
    netStream.addEventListener(NetStatusEvent.NET_STATUS, handleNetStreamStatus); 
    netStream.client = this; 
    netStream.play("media"); 
break; 

Само соединение NetGroup работает, и «NetGroup.Neighbor.Connect» вызывается каждому клиенту при подключении соседа. Но сам _sendStream просто не работает. Данные не получены, функция не вызвана.

Это делает работу, когда издательство NetStream строится следующим образом:

_sendStream = new NetStream(_netConnection, NetStream.DIRECT_CONNECTIONS); 

Однако, нам понадобится только NetStream для отправки одного NetGroup, и в соответствии с Adobe Documentation, используя gspec.groupspecWithAuthorizations() в конструкторе должен допускать именно это.

Мы что-то упустили?

ответ

1

Я нашел ответ:

Вы также должны сделать получающее NetStream слушать gspec.groupspecWithAuthorizations() вместо p_netStatusEvent.info.peerID.

Это действительно работает. К сожалению, это делает голосовую беседу невозможной, так как она невероятно медленная (так же медленно, как и NetGroup.post()), и вводит много звуковых артефактов.

Итак, нам нужно будет найти другое решение для разных чатов ...

 Смежные вопросы

  • Нет связанных вопросов^_^