【关注 融云全球互联网通信云】展开讨论之前,我们先来看一段 Javascript 伪代码。

// 加⼊聊天室,获取收发消息和信令能⼒
IMClient.shared.join(roomId, (isSuccess, error) => {
if(isSuccess) {
// 加⼊RTC Room 获取⾳频流和发布⾳频流能⼒
RTCClient.shared.join(roomId, role, (isSuccess, error) = > {
// 根据⾓⾊确定⽤户⾏为,是订阅⾳频流还是发布⾳频流
if(role == Audience) {
RTCClient.subscribeStreams(streams, (error) => {
})
} else {
RTCClient.publishStreams(streams, (error) => {
})
}
})
} else {
console.log(error)
}
})

常规语聊房解决方案

上述代码展示了业界常见的语聊房解决方案,即利用 IM 与 RTC 能力打造语聊房的过程。

基于这个方案,开发者需要处理以下问题:

同时维护 IM Room 与 RTC Room

需要根据角色判断流的订阅与发布

需要处理不同的错误信息

接下来我们再来看看利用常规方案处理上麦这一语聊房常见操作的基本流程。

(上麦的基本流程)

开发者需要处理的逻辑如下:

存储麦位信息

在更新麦位信息后,同步房间所有用户麦位信息

上麦时发布音频流,下麦时取消发布

上麦或下麦切换订阅流的逻辑(如果角色为主播需要订阅其他主播分流,如果角色为观众需订阅主播合流)

结论是,如果开发者基于 PaaS 服务的底层 SDK 进行语聊房的开发费时费力,并且需要处理相当多的业务逻辑。

语聊房解决方案的演变过程

事实上,以上方案已经是第二代语聊房解决方案,也是目前各 PaaS 服务厂商提供的主流解决方案。

我们简单介绍一下语聊房解决方案的演变过程。

首先需要明确的一点是,语聊房的核心是如何更好的管理麦位。

语聊房解决方案经历了 3 个阶段。

第一代,基于业务服务器管理麦位:PaaS 服务商提供后端和前端开源代码,开发者基于此进行二次开发。即,前端通过 Restful 接口调用后端接口,业务服务器来维护麦位信息的同步和更新。

第二代,基于前端 + 示例项目二开的方式:即管理麦位通过前端 IM SDK 直接修改聊天室属性进行维护和修改麦位信息,无需业务服务器参与,可以结合 RTC SDK 实现音频流的变更与订阅。并且,厂商提供对应的开源代码,开发者可根据开源代码进行二开。

第三代,也就是目前融云提供的解决方案,根据不同的融合场景(例如语聊房、直播等),将各种基础服务有机结合起来,提供贴近业务的 API 与回调,直接封装为特定的场景化 SDK。

我们从学习难度、开发难度、扩展性三个维度来对比各个方案的优劣。

学习难度

第一代方案基于业务服务器维护和管理麦位信息,开发者需要自己处理多用户的麦位同步、流的管理等复杂逻辑。并且,想要从 0 到 1 实现⼀个完整的语聊房项目,需同时接入和学习前后端开源代码,难度很高。

第二代方案,基于前端直接调用 IM SDK 的存储能力管理麦位,省去了业务服务器管理麦位的流程,相对简化,但是开发者仍然需要学习底层 SDK 的各个能力。

第三代方案,在第二代方案的基础上,将基础能力封装为贴近业务场景的 API,让开发者无需理解底层实现,只需要理解产品概念就能快速出活,从 0 到 1 开发完整语聊房项目。

开发难度

第一代方案需要同时接入前后端两套代码,更改难度巨大。

第二代方案需要在理解底层 SDK 使用的基础上进行更改,如果不是深入了解很难进行二次开发。

第三代方案只需理解产品概念即可,无论是基于 SDK 开发,还是基于样例开发,都能轻松掌握。

扩展性

第一代方案由于学习成本和开发难度大,开发时束手束脚,很难拓展新的玩法与模式。

第二代方案开发难度和学习成本都有⼀定程度的降低,扩展性局限在对开源代码的理解上。

第三代方案的扩展性基于 SDK 提供的扩展属性是否丰富,依赖于封装的程度。

(三代解决方案对比)

第三代方案的样例展示

俗话说:Talk is cheap. Show me the code. 我们通过⼀些实例来展示为什么场景化 SDK 是更好的解决方案,直接推动行业进入了新发展阶段。

首先,用户上麦。

/// ⽤户主动上⻨
/// @param seatIndex ⻨位序号
/// @param successBlock 上⻨成功
/// @param errorBlock 上⻨失败
- (void)enterSeat:(NSUInteger)seatIndex
success:(RCVoiceRoomSuccessBlock)successBlock
error:(RCVoiceRoomErrorBlock)errorBlock;
这是融云语聊房 SDK 封装的上麦操作。开发者无需关注麦位的信息更新和同步,无需关心流的订阅与发布,只要输入想要上麦的序号,所有细节都已经在 SDK 内部实现了。

再来看看,在语聊房场景中常见的申请上麦,大致流程如下:

(申请上麦流程)

繁琐的申请上麦、同意上麦等机制被简化为两个 API 和一个回调,简洁、高效地实现了复杂的上麦机制。

想要上麦的用户调用 requestSeat,向其他人发送上麦请求;

拥有审核权限的⼈,例如房主或管理员触发回调后,通过 accept 或者 reject 即可同意或拒绝对方上麦。

总而言之,融云推出的第三代解决方案——场景化 SDK,核心思路是将开发者从繁琐的开发中解放出来,帮助他们解放生产力,投入更多精力在产品创新上,开辟新战场、吸引新客群、收获新增长。

从语聊房 SDK 的诞生,看 PaaS 服务的演进过程相关推荐

  1. 语聊房 SDK,下一代场景化解决方案新范式

    [关注 融云全球互联网通信云]近日,融云语聊房 SDK 2.0 实力上线.在 1.0 的实时连麦.百万并发.音频管理等核心功能基础上,2.0 新增跨房间 PK 和语音电台两大场景,及房间浮窗显示.滑动 ...

  2. WICC 2021 技术分论坛 “开箱即用”语聊房Demo成亮点

    7月24日,第三届全球互联网通信云大会(WICC 2021)在北京成功召开,数千开发者共赴通信云技术盛宴.本次会议中,"开发者服务生态"被作为重要议题引起了全产业链的广泛关注.作为 ...

  3. 程序员的硬核浪漫 — 女友专属语聊房(内附源码)

    人人都说找个程序猿做男朋友就是好,钱多话少 over 早. 额...估计小编把文章发布出去后就要被公司的程序猿同胞们疯狂逮捕挨打了. 虽然日常生活中大家对程序猿的标签大多是呆板.木讷.不懂浪漫,格子衫 ...

  4. 语聊房高质量音乐伴奏的实现

    看恐怖片关掉声音,再吓人的画面效果也会大打折扣:一片和谐温馨的画面中突然出现急促的转场音乐,观众会立即领会这是要"大事不妙"了. 如果说每个人都有一首属于自己的 BGM,那不同场景 ...

  5. 如何 30 分钟搭建语聊房

    一个拥有 1-2 年经验的开发者,从 0 到 1 上线应用只要 7 天.一个刚起步的程序员,可以 30 分钟内完成一个 Demo. 这不是天方夜谭,而是融云场景化 SDK 带给行业的创变.[关注 融云 ...

  6. 小白7天上线语聊房产品,鱼哥惊呆了~

    上周,鱼哥和几个移动开发者吃饭闲聊,都聊到如今开发音视频产品,门槛较之前大大降低.2021年初,随着马斯克在应用 Clubhouse 中开麦输出,谈比特币,谈火星移民,谈脑机接口.Clubhouse ...

  7. 程序员是怎么快速搭建专属语聊房的

    1 语聊房应用场景说明 七夕礼物准备好了吗?程序猿七夕礼物标配,给女友搭建专属语聊房,既浪漫又硬核! 语聊房在社交场景中使用比较广泛,社交APP中的语聊房场景的实现,主要由业务系统和移动/Web 客户 ...

  8. 程序猿七夕礼物-如何30分钟给女友快速搭建专属语聊房

    1 语聊房应用场景说明 七夕礼物准备好了吗?程序猿七夕礼物标配,给女友搭建专属语聊房,既浪漫又硬核! 语聊房在社交场景中使用比较广泛,社交APP中的语聊房场景的实现,主要由业务系统和移动/Web 客户 ...

  9. 技术实战 —— 快速实现语聊房搭建

    点击上方"LiveVideoStack"关注我们 语音相比文字图片更丰富,比视频又更简便,是天然的社交工具.以95后为代表的Z世代用户,在微信.QQ.微博等主流社交工具以外,更愿意 ...

最新文章

  1. 测试服务命名和动态注册路由的方式@Xan
  2. AI十级「找茬」选手,非这个书生莫属,节后开源!
  3. python是否跨平台
  4. double类型怎么取余_数据类型和运算符
  5. cacti + nagios + npc 整合部署
  6. vue 回车查询 按钮_从零开始学习vue
  7. 千锋教育python全集_千锋python+人工智能最新视频教程(大全集)
  8. java 析构方法_java析构方法详解
  9. 华为怎么查看手机温度_华为手机误删照片怎么找回?手机怎么快速制作GIF动图...
  10. 存在链接注入漏洞_【安全提示】CNVD发布上周关注度较高的产品安全漏洞(20200817-20200823)...
  11. python中pip下载过慢问题
  12. 文库/豆丁网等免账号,积分下载器
  13. 发射功率 接收灵敏度 RF射频传输 原理 介绍 三分钟看懂 详解!
  14. 花椒母公司花房更新招股书:年利润4亿 周鸿祎是大股东
  15. c语言信息注册功能,c语言实现注册登陆功能(两个模块)
  16. 测绘遥感地信 国内外期刊大全
  17. DEC6713开发板的摸索(1)
  18. java copy-on-write_COW奶牛!Copy On Write机制了解一下
  19. 京东2015校园招聘笔试编程题
  20. 医院常见的信息化系统

热门文章

  1. Sketchup 获取选中的模型的面数
  2. CGAL笔记之单元格复合体和多面体篇——多面体凸分解
  3. touches,targetTouches,changedTouches
  4. 【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)
  5. 深度学习neuron神经元
  6. 信息学奥赛一本通:1405:质数的和与积
  7. CN2线路好处都有啥?
  8. Chocolatey安装和使用
  9. CSS笔试题-不超过三行显示全部内容,超过三行隐藏剩余内容并显示省略号
  10. 常见问题(持续更新)