防炸麦防漏麦(基于NERoom)

更新时间: 2024/08/14 14:11:32

为了维护语聊房良好的聊天秩序,防止出现炸麦和漏麦现象,网易云信提供最佳实践,帮助您有效避免炸麦和漏麦等问题的发生,提升语聊的质量和体验。

基本概念

  • 幽灵麦

    幽灵麦是指在音视频房间中出现非麦上用户说话的情况,即出现未知用户发言的情况。幽灵麦分为两种,炸麦和漏麦。

  • 炸麦

    炸麦是指未经授权的用户进入房间或者开麦,制造噪音,并持续发送违规的音视频内容,破坏聊天或互动的秩序。

    可能原因:非法用户利用某个 AppKey 配置 Token 有效期过长的问题,劫持 AppID 、UserID、RoomID 和 Token 重复登录。

  • 漏麦

    漏麦是指本应下麦或静音的用户未成功下麦或静音,导致音视频房间中实际说话用户与客户端上显示的麦位信息不相符。

    可能原因:由于网络或其他原因,导致信令丢失,SDK 或云信服务器没有获取到上下麦信息。即业务侧的麦位状态与音视频服务器上实际的推流状态不一致。

防炸麦

思路

  1. 找出可能是幽灵麦的用户 ID。

    幽灵麦 UID = RTC 当前正在发流的UID数组 - 业务麦位正在发流的UID数组

  2. 让该用户停止发送音频。

实现方法

  1. 提高 Token 安全性

    1. 在服务端生成Token,并妥善保管 AppKey 和 AppSecret,不要对外公开。通过生成 Token 并进行鉴权,我们可以有效控制用户的登录权限,避免非法用户重复登录房间。

    2. 定期更新 Token,提高 Token 的安全性。具体请参见 更新账号和 Token

  2. 找出幽灵麦的用户 ID

    1. 在云信控制台开通幽灵麦检测功能。

      在开通房间组件后,单击子功能配置,开通幽灵麦检测功能。

      开通幽灵麦检测功能后,NERoom 服务端会监听 RTC 的用户开始发布视频流用户开始发布音频流 回调事件,维护当前房间内正在说话的成员列表。

    2. NERoom 服务端收到以上事件后,检查发流的用户是否在麦位上,如果不在麦位上,则该用户为幽灵麦用户。

    3. NERoom 服务端抄送麦位非法推流回调事件给您的业务服务器。

      请确保已开通 NERoom 消息抄送

  3. 将用户移出房间。

    调用 NERoom 的移出房间成员 接口将用户踢出房间。被踢的用户会收到离开房间的回调,UI层做相应的退房逻辑以及提示即可。

防漏麦

  1. 当观众调用 leaveSeat 接口下麦或主播调用 kickSeat 接口将观众移出麦位时,NERoom 服务端会调用 RTC 服务端的查询房间媒体流状态 接口,获取音视频房间内各用户的媒体流状态。

  2. 将获取到的媒体流状态与用户麦位状态进行对比,如果用户没有被静音,RTC 服务端显示该用户还在发流,则重发麦位变更事件给客户端。

此文档是否对你有帮助?
有帮助
去反馈
  • 基本概念
  • 防炸麦
  • 思路
  • 实现方法
  • 防漏麦