概览
被动的动作的梳理和实现:
1、主播被动退出;
2、观众被动退出:
3、观众被动再进入:
接口列表:
- 获取token:
- 主播创建频道 : 收集频道名称、判断频道名称是否重复;
- 观众加入频道: 收集观众设备id;收集用户id; (加入频道需要 token; )
正常通知逻辑:
- 主播登出频道、或者切换频道,需要通知观众离开频道;
- 实时消息接口:getMembers; 获取频道成员列表;
- 发送频道消息接口: sendMessage; 频道的所有成员都会收到消息;
- 关于通知登入频道:
- 基于之前保存的用户列表;
- 发送点对点消息接口:sendMessageToPeer;一个一个通知加入频道;
异常逻辑
需要自己维护的数据:
- 用户
- 频道;
- 以上两样东西,说没就没;
其它:
- 问:A-B通话,A掉线,A leaveChannel,B也leave Channel,A再重新连上网络,sdk会重新连上之前的channel么,
- 答:B 已经Leave状态了,即使连上也不会有B的存在。同一个channelID相当于同一个频道,你所说的ChannelID声网是不会留存的,这个id对于你来说是区分频道的唯一手段,但是对于声网来说,并不关心你的频道创建还是销毁,希望你能好好的理解一下;
链接参考:
- 加入频道: https://docs.agora.io/cn/Agora Platform/API Reference/java/classio_1_1agora_1_1rtc_1_1_rtc_engine.html#a8b308c9102c08cb8dafb4672af1a3b4c
- token使用场景: https://docs.agora.io/cn/Agora%20Platform/token?platform=All%20Platforms#参考
- 发触发消息,让用户离开频道;也就是相当于通知离开频道;
https://docs.agora.io/cn/Real-time-Messaging/API Reference/RTM_java/classio_1_1agora_1_1rtm_1_1_rtm_channel.html#a9e0b6aad17bfceb3c9c939351a467d14 - 服务端踢人的API;(可以只踢人,也可以封禁,也可以设置封禁的时长;最大只能封禁24小时; 有频率限制;):https://docs.agora.io/cn/Agora%20Platform/dashboard_restful_communication?platform=All%20Platforms#5-服务端踢人-api
杂项(思考待确认)
- 云端管控(确保所有的都已经离线;)
- 用量监控 和 警报;
事件:
onMemberJoined(不超过512人)当有用户加入的时候,就收到通知,并且计算一下成员列表;
onMemberLeft;用户离开的时候收到回调;
onMemberCountUpdated: 成员数量;成员数量;
Publish
Subscribe
Host:主播:
Audience : 观众;
附录:
其它厂商
1、网易云信;(收费价格差不多)
2、七牛;(虽然是免费,据说实时音频的技术支持不到位)
3、腾讯云:(会便宜一些);
其它方案:
cdn推流方案:会延迟1~2秒;如果是视频会延迟2~5秒;
cdn推流方案,会减少很多成本,但是开发成本和效果会打折扣;