ライブの音声およびテキスト チャットを行うために、Cumulusサーバーを実行しています。
設定は、各クライアントが group.post() を介して同じ NetGroup 内の他の各クライアントにデータを投稿できることです。残念ながら、この関数は非常に遅い (少なくとも 0.5 秒の遅延) ため、NetStream.send を使用して他のクライアントの関数を呼び出し、それを介してデータを渡すことに切り替えました。これはほぼ瞬時に機能します。
ただし、現在、別の NetGroup を使用して別のチャット ルームを構築しようとしています。しかし、そうすると、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()を使用すると、まさにそれが許可されるはずです。
ここで何か不足していますか?