web 技术分享| 快速实现一个呼叫邀请 SDK
什么是呼叫邀请 SDK?
微信的音视频呼叫想必大家都用过吧,它就是呼叫邀请在社交场景的表现形式之一,同时呼叫邀请还被运用到很多场景:
娱乐场景:PK 连麦、抢麦
教培场景:举手发言
企业服务:类企业微信
金融服务:远程面签、保险定损
更多:应急指挥调度、健康医疗
呼叫邀请需要具备以下功能:
一套完善的呼叫邀请流程
音频 &视频通讯能力
自由灵活,方便业务逻辑拓展
开放的媒体控制权限(管理自己的媒体输入设备等)
一个在线体验的 Demo
这里有一个简单基础的 DEMO,请点击体验。
快速实现呼叫邀请 SDK
要实现一个呼叫邀请 SDK 并非易事,我们面临的问题有很多,其中比较突出的有:应用场景广泛,如何实现在不同场景下实现不同的业务逻辑?
应用场景的不同意味着需要处理的业务逻辑不同,如果针对不同场景去开发,既费时又费力,非明智之举。那么如何开发一个既要具备呼叫流程和音视频通话能力,还要满足在不同场景下可以实现不同业务逻辑的 SDK 呢?要想解决这个问题,我们可以给呼叫邀请的流程添加多个的生命周期,在不同的生命周期内做不同的事情,从而在不同场景下实现不同业务的逻辑 ,因此,呼叫邀请 SDK 需要具备两个核心模块,呼叫邀请流程 和 实时音频通讯 。
呼叫邀请流程 :基于 IM 或者信令服务 以及消息推送服务 实现的一对一或者群组消息通知服务。
实时音频通讯 :基于 webRTC
实现的一对一、多人的音视频通话解决方案。
其中呼叫邀请流程十分重要,决定了什么时候加入音视频通话,什么时候退出音频通话。
基本功能
为了方便理解,下面我们以 主叫 和 被叫 两个用户身份理解呼叫邀请的大致流程以及基础功能:
主叫 :发起呼叫邀请的用户
发起呼叫邀请 :一对一、多人
结束通话/取消呼叫邀请 :结束正在进行的通话或者取消(未接受/拒绝)的邀请
事件通知 :呼叫邀请的状态和流程通知
被叫 :接收到呼叫邀请的用户
接受邀请 :收到呼叫邀请之后,可执行接受邀请操作
拒绝邀请 :收到呼叫邀请之后,可执行拒绝邀请操作
事件通知 :呼叫邀请的状态和流程通知
同时我们还需要考虑很多异常的问题和潜在因素,例如:
呼叫邀请超时、对方应答、未及时应答
异常断网,回话保持
通话占线
用户不在线,发送推送消息
等等
用户 :每一个登录系统的用户
登录/登出系统
管理媒体输入设备:打开/关闭、切换
监听呼叫邀请
呼叫邀请的生命周期
上面我们将用户划分成了两个身份,那么每个身份在每个呼叫邀请流程中都不一样,也就意味着主叫的生命周期和被叫的生命周期是不一样的,因此我们需要将整个呼叫邀请流程按照主叫和被叫 两个身份来划分,分别是主叫的生命周期 和被叫的生命周期 :
主叫的生命周期 ,主叫发起邀请之后,直到邀请流程结束,这个过程中所有可能发生的事件,我们都会提供回调方法来实现。
对方未应答
对方是否收到邀请
对方接受邀请
对方拒绝邀请
邀请失败及原因
被叫的生命周期 ,被叫在收到邀请之后,直到邀请流程结束,这个过程中所有可能发生的事件,我们都会提供回调方法来实现。
未及时应答
接受邀请成功
拒绝邀请成功
主叫取消邀请
邀请失败及原因
这样我们就可以在不同的生命周期内做不同的事情,从而实现不同场景在业务上的需求 。下面我们列举了一些在不同情况下,主叫和被叫对应的生命周期:
发起呼叫邀请
取消呼叫邀请
接受呼叫邀请
拒绝呼叫邀请
呼叫邀请未响应
对方忙线中
不在线用户进行呼叫(推送通知)
总结
最后我们用一个公式来表示:
版权声明: 本文为 InfoQ 作者【anyRTC开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/877017369304dcc75aee7261c】。文章转载请联系作者。
评论