2

我们正在使用Cumulus服务器创建与 RTMFP 的语音聊天。用户通过加入同一个网络组相互连接。

订阅的 NetStreams 上的语音聊天和呼叫功能运行良好。

但是,有时,当用户关闭浏览器窗口时,同一个 NetGroup 中所有用户的 Flash 插件都会崩溃。

由于没有报告错误,并且从我的 IDE (FlashDevelop) 启动 Flash 应用程序时似乎没有发生崩溃,所以我不知道发生了什么。我所知道的是,有时当用户退出 Flash 应用程序(关闭浏览器窗口/应用程序)时会发生这种情况。

这是建立与 NetGroup 的连接和发布音频发布流的方式(在建立与 Cumulus 服务器的连接之后):

_gspecMain = new GroupSpecifier("MainGroup");
_gspecMain.multicastEnabled = true;
_gspecMain.postingEnabled = true;
_gspecMain.serverChannelEnabled = true;
_gspecMain.objectReplicationEnabled = false;
_group = new NetGroup(_netConnection, _gspecMain.groupspecWithAuthorizations());
_group.addEventListener(NetStatusEvent.NET_STATUS, handleNetGroupStatus);

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

这就是创建接收 NetStream 监听发布的方式(每当 Neighbor 连接时):

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

什么可能导致这种情况?当通知邻居断开连接时,我是否应该做一些特别的事情?请注意,我什至不知道崩溃是在任何通知之前还是之后发生的......

4

1 回答 1

1

您可以通过调试崩溃插件找到更多信息。将Visual Studio附加到进程中plugin-container.exe,也许您可​​以在此处发布更多信息(使用pastebin)。

第二件事 -如果您目前使用的是调试器版本,请尝试Flash Player 插件发布版本,但调试器版本更有可能在 Firefox 中崩溃。但是,您可以通过将 dom.ipc.plugins.enabled.npswf32.dll 设置为 false来避免它。

关于 Firefox 插件中断开连接的网络组对等点的特殊处理 - 我认为您无需再做任何事情......如果该应用程序在 ActiveX 插件和 Flash Player Standalone 投影仪中工作,但仅在 Firefox 插件的调试器版本中崩溃。 .. 简而言之:只关注 Flash Player 发行版本的崩溃

Other thing I would definitely try - use the original Adobe Cirrus or Flash Media Server Enterprise 4.5, not the open source equivalent, until you find the error. Even slight change in the protocol could crash the connection, thus crashing the plugin.

于 2012-05-19T07:33:19.843 回答