防炸麦防漏麦(基于NERoom)
更新时间: 2024/08/14 14:11:32
为了维护语聊房良好的聊天秩序,防止出现炸麦和漏麦现象,网易云信提供最佳实践,帮助您有效避免炸麦和漏麦等问题的发生,提升语聊的质量和体验。
基本概念
-
幽灵麦
幽灵麦是指在音视频房间中出现非麦上用户说话的情况,即出现未知用户发言的情况。幽灵麦分为两种,炸麦和漏麦。
-
炸麦
炸麦是指未经授权的用户进入房间或者开麦,制造噪音,并持续发送违规的音视频内容,破坏聊天或互动的秩序。
可能原因:非法用户利用某个 AppKey 配置 Token 有效期过长的问题,劫持 AppID 、UserID、RoomID 和 Token 重复登录。
-
漏麦
漏麦是指本应下麦或静音的用户未成功下麦或静音,导致音视频房间中实际说话用户与客户端上显示的麦位信息不相符。
可能原因:由于网络或其他原因,导致信令丢失,SDK 或云信服务器没有获取到上下麦信息。即业务侧的麦位状态与音视频服务器上实际的推流状态不一致。
防炸麦
思路
-
找出可能是幽灵麦的用户 ID。
幽灵麦 UID = RTC 当前正在发流的UID数组 - 业务麦位正在发流的UID数组
-
让该用户停止发送音频。
实现方法
-
提高 Token 安全性
-
在服务端生成Token,并妥善保管 AppKey 和 AppSecret,不要对外公开。通过生成 Token 并进行鉴权,我们可以有效控制用户的登录权限,避免非法用户重复登录房间。
-
定期更新 Token,提高 Token 的安全性。具体请参见 更新账号和 Token 。
-
-
找出幽灵麦的用户 ID
-
在云信控制台开通幽灵麦检测功能。
在开通房间组件后,单击子功能配置,开通幽灵麦检测功能。
开通幽灵麦检测功能后,NERoom 服务端会监听 RTC 的用户开始发布视频流 和 用户开始发布音频流 回调事件,维护当前房间内正在说话的成员列表。
-
NERoom 服务端收到以上事件后,检查发流的用户是否在麦位上,如果不在麦位上,则该用户为幽灵麦用户。
-
NERoom 服务端抄送麦位非法推流回调事件给您的业务服务器。
请确保已开通 NERoom 消息抄送。
-
-
将用户移出房间。
调用 NERoom 的移出房间成员 接口将用户踢出房间。被踢的用户会收到离开房间的回调,UI层做相应的退房逻辑以及提示即可。
防漏麦
-
当观众调用
leaveSeat
接口下麦或主播调用kickSeat
接口将观众移出麦位时,NERoom 服务端会调用 RTC 服务端的查询房间媒体流状态 接口,获取音视频房间内各用户的媒体流状态。 -
将获取到的媒体流状态与用户麦位状态进行对比,如果用户没有被静音,RTC 服务端显示该用户还在发流,则重发麦位变更事件给客户端。