简介
通过本篇教程, 您将学习到, 在使用声网 [跨频道媒体流转发] 实现 [语音房 - 单人 - 跨房PK] 功能时, 如果遇到漏音问题时, 该如何处理.
问题描述
我们在使用声网 [跨频道媒体流转发] 实现 [语音房 - 单人 - 跨房PK] 功能之后, 在线上实际运行时发现有 “漏音” 情况出现,
就是说 A 和 B两个房间 PK已经结束了, 但是其中一方还是能听到另一方的声音, 我这里总结了出现这种情况的原因 :
1) A 或 B 没有及时, 或者的来得及在PK结束时调用 stopChannelMediaRelay() 来停止 “频道转发”, 比如A和B的主播直接杀死APP, 但是房间并没有关闭;
2) 客户端调用 stopChannelMediaRelay() 之后, 并没有成功中断 “频道转发”, 这个概率很低, 我们线上就报过一次, 追查结果是因为 :
"主播第一次跨频道连麦的时候,中间出现了一次主播和机器人之间的心跳断开的情况。重连上后,这位主播连接的老的跨频道机器存在内存泄露,wm与worker断连,worker没有收到sdk断开的信息,所以没有超时退出(连接新的worker之后老的worker连接断开,60s后就会退出)。”
注意 : 这个case, 客户端调用 stopChannelMediaRelay() 时, 返回的结果代码是 0 , 并没有发生错误
解决方案
因为单纯由 “客户端” 来中断 “频道转发”, 有诸多的不确定性, 所以在PK结束时, 可以由服务器调用声网API, 把 “转发机器人” 踢出频道.
声网相关文档如下 :