对讲业务对讲过程中的几个状态
2019独角兽企业重金招聘Python工程师标准>>>
对基于VOIP业务的对讲有一点了解之后,那我们再来看看要完成一次对讲需要多少状态来表示。大概有下面几种状态:
1.granted:当你向服务器申请讲话的时候,并不是你申请了就一定会成功,因为在一个群组里面能讲话的只能是一个人,如果当前有人在讲话那么你肯定就不能讲了,所以当你申请之后服务器会给一个返回表示是否可以讲话,那么如果服务器返回了granted那么说明你当前可以讲话了。但是如果你收到了grant但是你没有发送语音,那么在几秒之后服务器可能会把你断掉。
2.idle:顾名思义就是空闲的意思,空闲就说明当前没有人在说话。
3.revoke:对于revoke消息有很多种情况,例如你讲话超时服务器会给你返回一个revoke表示你的话语权被剥夺,还有可能是因为别人的优先级比你高所以你也被剥夺了。一般被剥夺之后会有一个被剥夺的原因。
4.deny:deny拒绝,当服务器返回granted的时候表示你可以讲话了,那如果不能讲话的时候返回什么呢,那就是deny了。还有一些其他的情况也会出现deny了,比如服务器设置了你当前是仅听的状态,也就是你的发言被禁了。
5.taken:taken消息表示当前有人要发言了,在收到这个消息之后就可能收到语音了。
这些状态看起来比较简单,但是对于多会话以及网络的影响,就显得不那么简单了。
首先是消息丢失的问题:大家都知道,基于数据业务的对讲使用UDP的居多,因为UDP比较及时。那么相信大家也知道UDP有一个致命的缺点那就是丢包的问题。那大家就会想了如果在传输过程中把消息丢了那该怎么办呢?为此客户端和服务端都做了相应的改进。在服务端那就是连续发同一个消息,例如将granted连续发送5次,如果5次都丢了那说明网络环境真的很不好。服务端的改进可以解决一大部分丢包的问题,但是并不能完全解决,对于接收方如果恰巧就发送消息的时间短网络不好把消息全丢了。但是服务器并不知道你没有收到taken的消息,还是继续给你发语音,那就会出现一长串的语音发送到你。所以这个时候客户端如果只是根据有没有收到taken消息来判断是否要收听是不是有点武断呢,可能真的会丢失信息。可是如果我们用是否收到语音为判断的标准,那么是否会更合理呢,尽管在有的时候可能看不到讲话人的信息,但是总比把语音丢掉比较好吧。所以这个时候可能不仅仅要判断消息还要检测语音的情况来判断是否要播放。
其实是网络乱序:最主要的就是语音消息和控制消息的混乱,例如语音先来控制消息后来,那就会导致客户端的判断错误。
再次对于多会话:对于同一终端,在同一时间只能有一个人说或者一个人听,如果听多个人的讲话,那么就会比较混乱,这个时候就必须要有一个控制的策略。
转载于:https://my.oschina.net/u/1013544/blog/2992244
对讲业务对讲过程中的几个状态相关推荐
- 请问投稿中要求上传的author_SCI投稿过程中主要有哪些状态,持续时间大概多久?...
原标题:SCI投稿过程中主要有哪些状态,持续时间大概多久? 不同出版社旗下SCI杂志的投稿方式.过程以及状态有所区别,但是基本形式大致相同.我们掌握一种杂志的投稿及投稿状态,基本可以以一推百. 不同杂 ...
- TCP 通信过程中各步骤的状态
状态图 1 状态图 2 对于上面的图 N 多人都知道,它排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深刻的认识,不能只停留在 ...
- android音频系统(7):通话过程中的音频输出设备切换
前言:由于通话比较特殊,Android对于通话过程中音频输出设备的切换做了特殊处理,它在上层也是通过切换音频播放状态来完成切换操作的,android用CallAudioState来封装通话过程中的音频 ...
- 关于线程池运行过程中,业务逻辑出现未知异常导致线程中断问题反思
最近在项目研发中的关于线程池应用过程中由于业务逻辑异常导致的线程中断,但程序未中断导致的脏数据问题 话不多说,在最近最新的一个版本发布过程中,业务需要,我们要定期去给客户预留出可用的资源数据,提供客 ...
- 华为云计算IE面试笔记-FusionSphere Openstack规划设计过程中要考虑哪些网络平面,各平面主要走哪些业务?
在FusionSphere Openstack规划设计的过程中,至少有8个平面. 1. Internal_base,内部平面. ①是FusionSphere Openstack中的组件之间进行通信的网 ...
- SAP中物料质检过程中检验批/物料凭证/过账变更通知之间的业务关联图
截图中通过三个SAP事务窗口展示了SAP中物料质检过程中检验批/物料凭证/过账变更通知之间的业务关联,分别从左到右是WM中的LU04过账变更通知,MM中的MB51物料由质检库存变成非限制库存产生的物料 ...
- java模拟一个军队作战,()系统在作战过程中帮助指挥和参谋人员实施各项作战业务,辅助指挥人员对部队和武器实施指挥控制...
()系统在作战过程中帮助指挥和参谋人员实施各项作战业务,辅助指挥人员对部队和武器实施指挥控制 答:指挥控制 社交化电子商务是基于人际关系网络,利用互联网社交工具,从事商品或服务销售的经营行为,是新型电 ...
- 手机彩铃java工程项目_4G中手机彩铃业务信令过程简述
相信大家对彩铃都已不再陌生了,有了彩铃业务,那么当小伙伴们给自己打电话时,系统单调的"嘟--嘟--"等待音就再也不会让小伙伴们感到无趣了,替代这些嘟嘟音的将是动听美妙的音乐,或是各 ...
- 基于数据业务对讲的那些事
2019独角兽企业重金招聘Python工程师标准>>> 传统的数字对讲机对距离有一定的要求,一般在两公里之外对讲的效果就会大大的减弱,在很多时候不能满足用户的需求,再者随着移动网络的 ...
最新文章
- 实际操作_MFC修改控件的Tab顺序
- 初看Mybatis 源码 (二) Java动态代理类
- const 和指针赋值
- 【技术贴】解决 myeclipse打不开报错an error has occurred, see .
- android源码settings中显示所有正在运行进程流程分析
- OpenCV cv :: UMat与DirectX9曲面的互操作性的实例(附完整代码)
- nginx配置设置,使部分页面访问跳转到404页面
- 【Python】count()方法:统计字符串出现的次数
- 什么是Affinity
- [WinForm] VS2010发布、打包安装程序(超全超详细)
- 漫话:为什么计算机用补码存储数据?
- mailto 附带附件_为什么附带项目如此重要
- 从源码入手,一文带你读懂Spring AOP面向切面编程
- 继电器设备改造需要的设备清单
- LINUX下载编译commoncpp/ucommon
- 艾肯声卡调试机架安装教程与下载_2019最新推荐
- spring 学习书籍
- 用三元组存储稀疏矩阵,实现其快速转置及矩阵相乘
- 点到直线的距离公式: 一元微积分
- Geforce 错误代码 ERROR CODE:0x0003问题方法