尽管有flush(),OkHttp在上传数据之前会缓冲〜800kb

 求学lx 发布于 2023-01-15 16:40

我正在尝试发布图像的上传进度,使用okhttp作为我的客户端和mimecraft来上传它们以打包多部分文件。

当数据被写入套接字时,我添加了日志以写入字节数(如果我能正确告诉的话,以4kb的块为单位),然后上传。

问题是,虽然每次写入数据块时我都会在输出流上调用flush,但直到将〜800kb写入输出流后,似乎都没有上载。一旦达到该点,它似乎会上传〜100kb,然后该应用再向输出流写入另外100kb(如释放的空间,可以写更多一点),然后继续。

这样的结果是(通过1.2mb文件)前800kb几乎立即被写入/报告,然后开始上载(通过charles网络软件跟踪),然后在下一个800kb中开始读取/写入/上载100kb几秒钟后,一旦我将最后一个字节写入输出流,应用程序就会报告已写入100%的上传内容。尽管这是正确的,但由于网络客户端仍在上传仍在网络缓冲区中的最后800kb,它又在那儿坐了5-10秒,然后才完成请求。

有没有人有这种经验,或者知道这是否是okhttp中的常见问题?

干杯

编辑:如果我上传的文件少于800kb,我测试了250kb和500kb,它们在上传之前立即被100%写入流中,但是3mb的图像仍将上传800kb,然后以大约100kb的块数滴答,并且每次写入一些文件时,写入循环都会坐在那里,另外写入100kb。

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有