我们正在使用Cumulus服务器与RTMFP创建语音聊天。 用户通过加入同一个NetGroup来相互连接。
订阅的NetStream上的语音聊天和调用功能运行良好。
然而,有时,当用户关闭浏览器窗口时,同一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");
可能导致这种情况的原因是什么?当通知邻居断开连接时,我是否应该做一些特别的事情?请注意,我甚至不知道在任何通知之前或之后发生了崩溃......
答案 0 :(得分:1)
您可以在debugging the crashing plugin找到更多信息。附上 Visual Studio 以处理plugin-container.exe
,也许您可以在此处发布更多信息(使用pastebin)。
第二件事 - 尝试 Flash Player插件发行版,如果您目前使用的是Debugger版本I,但调试版更有可能在Firefox中崩溃。但是,你可以通过setting dom.ipc.plugins.enabled.npswf32.dll to false来避免它。
关于Firefox插件中断开连接的netgroup对等体的特殊处理 - 我认为你不需要再做任何事情......如果应用程序在ActiveX插件和Flash Player独立投影机中工作,但只在调试器版本的插件中崩溃for Firefox ...简而言之:仅关注Flash Player发布版本的崩溃。
我肯定会尝试的其他方法 - 使用原始的Adobe Cirrus或Flash Media Server Enterprise 4.5,而不是开源的等效项,直到找到错误。即使协议中的轻微更改也可能导致连接崩溃,从而导致插件崩溃。