使用Adobe Cirrus的onPeerConnect方法不会被触发

时间:2011-08-18 14:24:23

标签: actionscript-3 rtmfp adobe-cirrus

我使用Adobe Cirrus建立了NetGroup。由于我在发布新流时收到NetGroup.Neighbor.ConnectNetGroup.MulticastStream.PublishNotify个事件,因此所有客户都可以正常联系并互相查看。

但是,如果用户订阅已发布的流,则发布者不会收到通知(没有NetStatusEvent,也没有回调onPeerConnect方法)。但是,订户可以毫无问题地接收流。

关于非工作onPeerConnect方法的所有其他问题都与NetStream.DIRECT_CONNECTIONS有关,但就我而言,我使用的是NetGroup。

这里有什么问题?

// Only the relevant parts, a few things have been stripped (e.g. connect the netGroup only when the NetConnection has been established etc.)
var groupSpecifier:GroupSpecifier = new GroupSpecifier("group");
groupSpecifier.multicastEnabled = true;
groupSpecifier.postingEnabled = true;
groupSpecifier.serverChannelEnabled = true;
groupSpecifier.objectReplicationEnabled = true;
groupSpecifier.ipMulticastMemberUpdatesEnabled = true;
groupSpecifier.routingEnabled = true;

var netGroup:NetGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations());

var netStream:NetStream = new NetStream(netConnection, groupSpecifier.groupspecWithAuthorizations());
netStream.client = {onPeerConnect:onPeerConnect};
netStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);

// Never gets called
public function onPeerConnect(netStream:NetStream):Boolean {
    trace("onPeerConnect: "+netStream.farID);

    return true;
}

private function onNetStatus(event:NetStatusEvent):void {
    trace(event.info.code);

    switch(event.info.code) {
        case EventCodes.STREAM_CONNECT_SUCCESS :
            netStream.attachCamera(camera);
            netStream.attachAudio(microphone);
            netStream.publish(streamName);
            break;
    }
}

1 个答案:

答案 0 :(得分:3)

仅在使用DIRECT_CONNECTIONS时调用onPeerConnect,而不是为NetGroups调用。不幸的是,文档或其他任何地方都没有提到这一点。