Comments (24)
有运行时的log吗?
from im_android.
tcp 丢包是个什么概念?
from im_android.
size.txt
麻烦测试下这个patch是不是能解决这个问题?
校验data的大小, 如果data超过64k(单个消息最大长度), 则断开socket重新链接
from im_android.
复现方式:
- 客户端A 下线
- 给客户端发送大量超过 1K 大小的文本内容消息
- 客户端A 上线
- 客户端A 断网
- 客户端A 联网
- 重复断网、联网操作
- 一段时间后,会导致
byte[] data
变成不可解包的数据,大小持续增加(心跳)
以下是在 IMService.handleData()
中打印 "handleData: "+this.data.length
的Log日志:
from im_android.
麻烦发下完整日志, 保留原来的日志, 文本附件
from im_android.
涉及到公司数据,不太方便发、 而且日志也没有看到其他额外的有用信息
from im_android.
过滤tag, 保留imservice的日志就好了
from im_android.
还有你们用的sdk 的版本(commit id), 链接的服务器地址是?如果是私有部署,提供服务器版本(commitid), 以及是否有修改过服务器代码?
from im_android.
我没有用你前面发的patch版本
客户端代码没有改动,服务器端代码不清楚有没有改动
from im_android.
1.提供客户端 imservice 完整日志
2.使用patch,测试问题是否解决, 如果没有解决,然后提供客户端 imservice的完整日志
3.同时请告知明确的版本(包括客户端及服务端),明确服务端代码的改动, 还请贵公司遵守服务器所使用的开源协议。
from im_android.
- 完整日志我在尝试分离导出
- 你前面给的patch方案,我不太认同,如果消息堆积太多,正常逻辑就存在超过64k的情况
- 刚刚跟我司后端确认了,后端代码也是没有修改过的。另外,你们的开源协议是什么?在哪里声明了,我去看看
from im_android.
"3.同时请告知明确的版本(包括客户端及服务端)"
patch解决的根据是:堆积在data缓存的单条消息不会超过64k
保留在data一定是不完整的一条消息, 否则是不会堆积在data缓存中的。
不认可也麻烦测试下
“2.使用patch,测试问题是否解决, 如果没有解决,然后提供客户端 imservice的完整日志”
from im_android.
这个是基于18年3月份的Android端代码打印的日志;
服务器端是去年的代码,具体时间、commitId找不到。
from im_android.
你版本太旧了, 麻烦更新到最新的版本
from im_android.
对比过最新版的代码,逻辑还是一样的。而且我刚看了你的patch的修改内容,也不能解决data无限增长的问题。
把data清空倒是可以:
if (this.data.length > Message.MAX_MESSAGE_SIZE) {
this.data = null;
return false;
}
from im_android.
欢迎基于最新版本的pr,我们没有办法维护18年的版本了
from im_android.
你们最新版本同样存在这个问题。
from im_android.
归根结底,之所以会出现这个问题,还是因为没有考虑丢包问题。
如果在每个包之间增加特殊标志内容,以该标志分割每一个包,就不可能出现data无限增长的可能。
from im_android.
你怎么确定新版本有同样问题?还是请测试一下, 提供下完整日志
from im_android.
已经决定弃坑了~
from im_android.
如果你觉得自己的方案是对的, 我们欢迎pr
from im_android.
if (this.data.length > Message.MAX_MESSAGE_SIZE) {
this.data = null;
return false;
}
handleData return false; 会导致socket 重新链接, socket重新连接是会清空this.data缓存的, 所以这里的this.data =null;是多余的。
from im_android.
18年的版本可能在重新链接socket的时候, 没有清空 this.data
from im_android.
确实如此,看最新的代码 this.data
会在连接上时清空,可以避免data无限增长。
但是在网络较差是,很可能频繁出现丢包,通过反复重连来解决丢包问题,实在是不可取。
from im_android.
Related Issues (9)
- 群发有问题 HOT 1
- demo闪退,在使用中自动闪退。 HOT 10
- 运行demo闪退 HOT 4
- Can not send file HOT 1
- 源码 import 很伤,在做 flutter 插件的时候非常不便 HOT 1
- C连接层有偶尔崩溃 HOT 4
- 开启混淆 HOT 3
- @功能回退
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from im_android.