关于网络重传策略,如何避免重复发送

2014-12-19 18:34:10 +08:00
 Registering
在手机端发送图片,设置了10秒左右进行重传,重传最多3次,,,


结果遇到以下问题

网络环境不好的时候服务器会收到同样的照片3张,,,

大概能理解其中的原因,,其实就是每次请求没挂掉,都在网络队列中,但是客户端一超时就会重传,导致队列中多了一副相同图片,,,,


想问问,网络重传的策略问题,有什么比较好的解决方案,
2829 次点击
所在节点    程序员
11 条回复
llbbzh
2014-12-19 20:15:39 +08:00
每次开始传图都需要获取一个随机token,每个token只能传一次图,客户端重传时不再获取token
Registering
2014-12-19 20:24:34 +08:00
@llbbzh 我用的是android官方的volley库,API貌似没得敢于重传过程,,该源码可能可以
lujiajing1126
2014-12-19 20:36:49 +08:00
服务器做个md5摘要之类的或者直接用第三方的云存储
不知道你服务器端是什么语言
volley是个大坑,谷歌都是些半成品。。我们用的async-http挺好用!
Registering
2014-12-19 20:53:52 +08:00
@lujiajing1126 哎 ,确实是一个半成品,说得好听就是开放,让你自己去实现,其实用起来很麻烦
,,,,,
有点想花点时间把网络框架换掉,,,
lujiajing1126
2014-12-19 20:57:34 +08:00
@Registering 哈哈哈可以看一下我们公司在http-async上面封装的io-nothing-http

链接: https://github.com/whosv/android-nothing-http
llbbzh
2014-12-19 21:05:06 +08:00
@Registering 没做过安卓开发,猜测可能是提供一个可以POST的地址吧?那就把token作为地址的参数,然后交给服务器判断
PrideChung
2014-12-19 22:23:57 +08:00
我不明白为什么你不等网络请求失败了之后再重传
Registering
2014-12-19 22:25:05 +08:00
@llbbzh token的原理是给每个请求一个单独的标志ID?
est
2014-12-19 22:56:39 +08:00
服务器支持断点续传即可。。。。。。。。。。。。。。
llbbzh
2014-12-19 23:47:07 +08:00
@Registering 是的。而且这个id不必保存,可以每天随时清理旧的。没写过什么东西只能回答到这
Registering
2014-12-20 15:59:12 +08:00
@PrideChung @est @llbbzh @lujiajing1126 volley确实坑,重传功能基本相当于没用的,,最后我把超时时间设置得尽量大,问题解决了,,,,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/155193

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX