前言
在确定采用 [声网] 和 [云信] 相结合的方式实现 “语音房” 功能后,
就语音房所需要的核心能力, 对两家SDK做了进一步技术能力调研.
调研结果
1] 声网SDK
负责实现语音推拉流/静音/混音/背景音 等功能, 只做底层能力提供者的角色;
2] 云信IM 聊天室 SDK
主要技术特点 :
1] 聊天室所有消息都不支持离线
结论 :
1] 所有的 进/出/踢/禁言/拉黑 等功能, 需要使用云信聊天室API开发;
2] 麦位管理, 需要使用云信的聊天室队列API实现, 声网不提供功能;
3] 麦位上的 请求上麦列表, 需要使用云信的聊天室队列API实现的, 声网不提供此功能;
4] 送礼/表情 等功能需要使用云信聊天室自定义消息实现;
用户进入语聊房之后, 需要先加入云信聊天室, 然后再加入声网语音频道, 那么用户进出聊天室的通知, 使用云信的即可, 不依赖声网的回调机制了.
还有就是声网的回调, 无法携带自定义扩展消息, 而且声网的回调, 返回的是 我们设置给声网的 AgoraUserId (int) , 这个有别于 现存的 AppUserId(long) 和 IMAccid(String) …..
3] 云信IM 系统自定义通知
主要技术特点 :
1] 客户端和服务端都可以发送
2] 有PUSH 以及通知栏消息展示
3] 不会触发会话, 可以不累加消息未读数
4] 目前支持两种类型:点对点类型和群类型(仅限高级群), 不支持给聊天室发送
5] 可以存离线消息
结论 :
使用其实现语音房所需要的 “实时信令” 能力.
原因 :
如果使用云信IM 聊天室的自定义消息, 实现信令功能, 那么客户端需要做很多额外的屏蔽工作, 因为不支持点对点发送消息, 还需要在消息列表中做屏蔽, 而且只支持对在线用户发送消息, 没有离线功能, 推送.
4] 云信 信令 SDK
主要技术特点 :
1] 客户端和服务端都可以发送
2] 邀请机制, 有PUSH 以及通知栏消息展示, 自定义命令机制没有PUSH
3] 不会触发会话, 可以不累加消息未读数
4] 目前支持两种类型:点对点类型和频道内所有用户
结论 : 不使用
原因 :
1] 不想引入有相似功能的SDK;
2] 实现相同功能, 付出的开发成功更高;