管理进化

如何构建本土Clubhouse


摘要:本文从架构设计、核心流程两个部分告诉大家如何构建本土Clubhouse,架构设计主要包括客户端组件、网关代理等4个主要架构的设计,核心流程主要包括获取房间列表、创建/加入房间等5个主要步骤。

一、架构设计:

1.客户端组件:封装实现客户端与应用服务 Clubhouse Server 的交互,封装实现与音视频的交互。

2.网关代理:应用服务的网关服务。

3.Clubhouse Server:仿 ClubHouse 应用服务。

4.网易 G2 音视频 RTC 服务:提供稳定流畅、高品质、全平台的点对点和多人实时音视频通话服务,其中包括:

(1)网易云信 IM SDK

(2)网易云信 G2 SDK

架构图如下:

二、核心流程:

分解一下需求,除去用户标签、房间标签和话题推荐,Clubhouse 的功能大概分为以下几个板块:

(1)房间列表

(2)创建/加入房间

(3)管理员邀请用户

(4)举手发言

(5)离开房间

其中,整体的房间控制需要在网易云信 G2 音视频 SDK 的基础之上,借助服务端来控制;加入房间后的音视频能力,则直接由 SDK 提供;另外服务端通知则由网易云信 IM SDK 提供的长链接服务来负责传递。

详细流程如下:

(1)获取房间列表

在这一步中,调用服务端接口获取到房间列表。

(2)创建/加入房间

在这一步中,不论是创建房间还是加入房间,都会调用服务端提供的 /clubRoom/join 接口。

在用户加入到 channelName 房间时,应用服务器会判断channelName 是否存在。

如果对应房间不存在,会创建一个房间并加入同时返回相应的房间信息;如果传入 channelName 存在,则用户直接加入该房间。

当获取到服务端返回的房间信息时,再调用 G2 SDK 的加入房间 API joinChannelWithToken,真正加入音频房间。

当加入房间成功后,G2 SDK 会抄送消息至应用服务器,更新用户在房间中的状态。

(3)管理员邀请用户加入房间

当管理员点击邀请用户加入房间时,会先获取到好友列表,然后服务端生成一个短链返回到客户端。当被邀请者点击短链后,会自动加入房间。

(4)举手发言

在这一步中,客户端会先调用/clubRoom/handsup接口,告诉服务端我想发言。

然后,服务端通过云信 IM 提供的透传协议以及长链接将消息发送给房间管理员。

管理员点击同意时,会调用管理员会控接口/clubRoom/control/host更新成员音频状态为「发言状态」,同时应用服务器通过 IM 透传协议通知举手者音频已打开,此时举手者调用 G2 的 API enableLocalAudio 来开启麦克风。

(5)离开房间

最后,当用户点击离开房间按钮后,直接调用 G2 SDK 的 leaveChannel 方法离开房间,此时,G2 会抄送用户离开消息至应用服务器,服务器标记该用户离开。

按照如上步骤,就可以快速地打造一个属于自己的「Clubhouse」。

相关阅读:

1、音频技术难点与解决方案

问题描述:

1) 弱网情况下的丢包问题

2) 设备适配问题

3) 音质问题

解决方案:

1) 网易云信音视频通话2.0使用自研的网络引擎弱网算法,保证在80%丢包的传输场景下,音频也能进行正常通话,弱网优势更明显。

2) 网易云信针对超过数千款设备进行音质适配,保证回声抑制的效果在绝大多数机型上都有最优的表现。

3) 自研的音频AI降噪算法,可以针对嘈杂人声、键盘声等非稳态噪声进行定向降噪,提升对于环境稳态噪声的抑制能力,保留更纯粹人声。

2、内容管控技术难题与解决方案

问题描述:

1)  对于Clubhouse 这一类声音社交的语音聊天室场景,场景中可能出现如暴恐、涉政、色情、广告等不可控违规内容。随着有关部门的监管力度不断增强,平台对于内容进行管控的工作成为了必要。

2)  实时音频场景下的内容审核,由于其场景实时进行的特殊性,对反垃圾服务也提出了较为严苛的要求。例如,审核结果必须足够实时,嘈杂场景下的音频采集不能严重影响检出率,高并发场景下需要做到快速响应不拥塞等等。

解决方案:

网易云信针对该场景打磨出了一套完备的实时音频反垃圾服务,为客户的业务合规性保驾护航。该服务通过业内领先的语音识别技术,结合反垃圾文本过滤规则体系,精准、高效分析识别违规音频。此外,依托网易云计算资源,动态扩容,弹性伸缩,满足客户的涉黄、涉政、广告等其他多维度场景的高并发、高精准的反垃圾检测。

智齿客服