Android-Android如何提升网络通信速度?
Android语音识别客户端是边录音边将请求发送给服务器端进行识别(每秒钟发一次)。
我使用的是HTTPURLConnection进行网络通信,使用的是短连接。每凑齐1秒钟语音,就发起一个线程向服务器发HTTP请求。
测试后发现,WiFi下平均响应时间约1秒,3G下平均响应时间约2秒,2G下平均响应时间约4秒。服务器进行识别的时间基本固定(1秒的语音,进行识别需要大概0.4秒),从而可以判断主要的时间都消耗到了网络通信上(建立连接、网络传输)。然而,每次通信时,传输的数据量并不大,客户端发送数据量约4KB,服务器回应的数据量约1KB。
目前,我们的域名服务器不支持socket直连,允许使用socket连接的唯一情形是:使用socket构造一个HTTP包(即Header域必须符合HTTP协议)。
我自己考虑了几个方法,觉得都存在一定风险或者效果不明显,阐述如下:
(1)如果使用HTTP长连接的话,如果服务器响应速度慢,会出现相应超时后连接断开,或者请求拥堵,占用服务器资源的情况。
(2)如果将请求包的时间间隔改短的话,由于网络传输存在丢包的可能(具体概率未统计,约2%),那么,同一段儿语音,构造的请求包就会变多,从而增大丢包的风险。
(3)如果采用压缩传输(gzip压缩)的话,由于传输的数据量较小(不超过4KB),而且语音数据本身就是经过10倍压缩后的,很难再减少数据量(自测压缩前后,文件大小几乎不变)。
Android如何提升网络通信速度(提升建立连接速度、提升网络通信速度等),望大家指点一二。多谢~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于语音通信来说,HTTP协议的冗余有点多啊……而冗余多对于移动网络这种带宽吃紧的应用来说无疑是十分要命的……
对于非文本、实时性要求较高的信息来说,最好是直接构造基于tcp协议的通讯协议……
或者你可以直接参考voip协议。