移动设备的产品的网络状态取决于用户所处的网络环境。
这个网络环境也会根随的用户的位置进行改变。
也很有可能前一秒是在Wifi网络下,这一秒4G了,再过一会信号就变弱或无信号了。
那么,对于产品的实时性要求很高的产品,如何设定这个超时时长呢?
比如语音识别类的产品,有以下几个产品特性,网络性能对其影响较
1,上行的数据量比较大
2,服务端处理数据的时间,依赖于上传的语音数据量
3,语音识别的过程是个持续的过程,一次完整的语音识别过程
4,用户对于产品的实时性要求较高
这时,网络超时时长的设定就不能以一个最大值的方式来执行了。
1,在网络信号不稳定时,我们需要快速的告知用户,由于网络状态导致识别的过程出错,减少不必要的等待。
2,无论任何网络状态下,任何的数据量,我们都需要保证本次网络请求的有效性。
3,总结一句话,只要这个超时时间精确,以上的问题就可以解决!
看到这里,想必大家都有一定的思路了
这里给大家例一下大概的思路
1,获取当前网络类型,根据网络类型得到该网络类型的网络速度 N.s
2,获取本次客户端上传的真实数据量C.d
3,数据量 C.d与网速N.s作比,得出上传数据所花费时间 C.D.t
4,与服务端确定,处理单位数据量与花费时间值S.P.d,
5,数据量 C.d与单位数据量费时S.P.d关联,得出服务器花费时间S.P.D.t
6,对于服务器返回数据进行预估S.d
7,数据量 S.d与网速N.s作比,得出上传数据所花费时间 S.D.t
8,那么总的超时时间可以为 C.D.t + S.P.D.t + S.D.t(上传数据时间+处理数据时间+下发数据时间)
9,也可能加上建立联接时间的补充
10,一些容错的时长buffer
这么执行下来,超时时长就变得精确多了,无论发送数据量多少,网络是什么样,这个传输变的更可靠。
同理,该方案,也可应用到其它类同的场景中,根据产品需求及技术依赖进行优化。
补充:类似的功能,也可以尝试使用分包的策略降低单次网络请求的失败率,减少总时长,欢迎大家阅读及交流
网友评论