web技术分享| 快速实现一个呼叫邀请 SDK

在这里插入图片描述

什么是呼叫邀请 SDK?

微信的音视频呼叫想必大家都用过吧,它就是呼叫邀请在社交场景的表现形式之一,同时呼叫邀请还被运用到很多场景:

  • 娱乐场景:PK 连麦、抢麦
  • 教培场景:举手发言
  • 企业服务:类企业微信
  • 金融服务:远程面签、保险定损
  • 更多:应急指挥调度、健康医疗

在这里插入图片描述

呼叫邀请需要具备以下功能:

  • 一套完善的呼叫邀请流程
  • 音频&视频通讯能力
  • 自由灵活,方便业务逻辑拓展
  • 开放的媒体控制权限(管理自己的媒体输入设备等)

一个在线体验的 Demo

这里有一个简单基础的 DEMO,请点击体验

快速实现呼叫邀请 SDK

要实现一个呼叫邀请 SDK 并非易事,我们面临的问题有很多,其中比较突出的有:应用场景广泛,如何实现在不同场景下实现不同的业务逻辑?

应用场景的不同意味着需要处理的业务逻辑不同,如果针对不同场景去开发,既费时又费力,非明智之举。那么如何开发一个既要具备呼叫流程和音视频通话能力,还要满足在不同场景下可以实现不同业务逻辑的 SDK 呢?要想解决这个问题,我们可以给呼叫邀请的流程添加多个的生命周期,在不同的生命周期内做不同的事情,从而在不同场景下实现不同业务的逻辑 ,因此,呼叫邀请 SDK 需要具备两个核心模块,呼叫邀请流程实时音频通讯

呼叫邀请流程 :基于 IM 或者信令服务 以及消息推送服务 实现的一对一或者群组消息通知服务。

实时音频通讯 :基于 webRTC 实现的一对一、多人的音视频通话解决方案。

其中呼叫邀请流程十分重要,决定了什么时候加入音视频通话,什么时候退出音频通话。

基本功能

为了方便理解,下面我们以 主叫被叫 两个用户身份理解呼叫邀请的大致流程以及基础功能:

主叫 :发起呼叫邀请的用户

  • 发起呼叫邀请 :一对一、多人
  • 结束通话/取消呼叫邀请 :结束正在进行的通话或者取消(未接受/拒绝)的邀请
  • 事件通知 :呼叫邀请的状态和流程通知

被叫 :接收到呼叫邀请的用户

  • 接受邀请 :收到呼叫邀请之后,可执行接受邀请操作
  • 拒绝邀请 :收到呼叫邀请之后,可执行拒绝邀请操作
  • 事件通知 :呼叫邀请的状态和流程通知

同时我们还需要考虑很多异常的问题和潜在因素,例如:

  • 呼叫邀请超时、对方应答、未及时应答
  • 异常断网,回话保持
  • 通话占线
  • 用户不在线,发送推送消息
  • 等等

用户 :每一个登录系统的用户

  • 登录/登出系统
  • 管理媒体输入设备:打开/关闭、切换
  • 监听呼叫邀请

呼叫邀请的生命周期

上面我们将用户划分成了两个身份,那么每个身份在每个呼叫邀请流程中都不一样,也就意味着主叫的生命周期和被叫的生命周期是不一样的,因此我们需要将整个呼叫邀请流程按照主叫和被叫 两个身份来划分,分别是主叫的生命周期被叫的生命周期

  • 主叫的生命周期 ,主叫发起邀请之后,直到邀请流程结束,这个过程中所有可能发生的事件,我们都会提供回调方法来实现。

    • 对方未应答
    • 对方是否收到邀请
    • 对方接受邀请
    • 对方拒绝邀请
    • 邀请失败及原因
  • 被叫的生命周期 ,被叫在收到邀请之后,直到邀请流程结束,这个过程中所有可能发生的事件,我们都会提供回调方法来实现。

    • 未及时应答
    • 接受邀请成功
    • 拒绝邀请成功
    • 主叫取消邀请
    • 邀请失败及原因

这样我们就可以在不同的生命周期内做不同的事情,从而实现不同场景在业务上的需求 。下面我们列举了一些在不同情况下,主叫和被叫对应的生命周期:

发起呼叫邀请

在这里插入图片描述

取消呼叫邀请

在这里插入图片描述

接受呼叫邀请

在这里插入图片描述

拒绝呼叫邀请

在这里插入图片描述

呼叫邀请未响应

在这里插入图片描述

对方忙线中

在这里插入图片描述

不在线用户进行呼叫(推送通知)

在这里插入图片描述

总结

最后我们用一个公式来表示:

消息通知服务 = (IM || 信令服务 + 消息推送服务) + 生命周期;
呼叫邀请 SDK = 消息通知服务 + 音视频通话;

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值