连接丢失后的 ActionScript NetStream.Publish.BadName 错误
Posted
技术标签:
【中文标题】连接丢失后的 ActionScript NetStream.Publish.BadName 错误【英文标题】:ActionScript NetStream.Publish.BadName Error after Connection lost 【发布时间】:2014-01-26 21:43:03 【问题描述】:我正在使用 AS3 和 Red5 Flash Server 进行流式传输。
在我遇到问题之前一切正常。我不知道它的 Flash 服务器错误与否!
当我关闭流连接(在发布者上)并再次连接它时,它可以工作,但是 当我断开我的互联网连接(用于测试)然后重新连接并刷新页面时,它给了我: @987654322 @ 在 EventListener 中。
我用谷歌搜索了它,发现当他们忘记关闭一个现有的发布客户端然后他们尝试运行另一个发布客户端时会发生这种情况。一次只能有一个发布者使用唯一的名称。
所以当我失去网络连接时,我的发布者名称仍在服务器中,我无法再次使用该名称,直到服务器重新启动!
这是一个僵尸流进程吗? 如何关闭空闲流名称或手动关闭它们?
抱歉英语不好。
提前致谢
【问题讨论】:
看起来这是 Red5 的一个已知问题:code.google.com/p/red5/issues/detail?id=325 非常感谢,那我该怎么办? 【参考方案1】:https://helpx.adobe.com/adobe-media-server/kb/prevent-netstream-publish-badname-errors.html
问题
Flash Media Server 将 NetStream.Publish.BadName 消息返回给发布者。当与服务器的连接中断并且发布者尝试重新发布实时流时,会发生错误。 解决方案
配置应用程序的 PublishTimeout 值以允许 Flash Media Server 清除第一个发布连接并允许后续发布连接接管直播流。 PublishTimeout 设置指定当另一个客户端尝试发布到流时服务器等待发布者响应的时间(以毫秒为单位)。如果第一个发布者未能在此标签中指定的时间内响应,则服务器允许第二个发布者接管直播流。默认值为 2000(或 2 秒),请按照以下步骤更改:
Edit the local or global Application.xml. The default global location is in $fms_root\conf\_defaultRoot_\_defaultVHost_..
Change numerical value between the Application > StreamManager > Live > PublishTimeout tags.
Save the file and restart the application.
注意事项:
Disable this tag by setting the value to -1.
For streams experiencing latency, consider increasing the PublishTimeout value.
If your publishing client has a configurable connection timeout, set its value greater than the PublishTimeout value.
附加信息
Flash Media Server 仅允许一个客户端发布者向每个应用程序实例发布实时流。它拒绝任何尝试发布现有实时流并向该客户端返回 NetStream.Publish.BadName 状态的客户端。由于套接字 API 的限制,服务器在尝试重新发布流之前可能不会收到原始发布者已断开连接的通知。服务器尊重原始流发布者的连接,并阻止同一流的其他发布尝试。
本作品根据知识共享署名-非商业性使用-相同方式共享 3.0 未移植许可 Twitter™ 获得许可,而 Facebook 帖子不受知识共享条款的约束。
法律声明 |在线隐私政策
【讨论】:
所以我必须设置超时值?如何使用 AS 代码做到这一点?以上是关于连接丢失后的 ActionScript NetStream.Publish.BadName 错误的主要内容,如果未能解决你的问题,请参考以下文章