GithubHelp home page GithubHelp logo

Comments (24)

richmonkey avatar richmonkey commented on August 28, 2024

有运行时的log吗?

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

tcp 丢包是个什么概念?

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

size.txt
麻烦测试下这个patch是不是能解决这个问题?
校验data的大小, 如果data超过64k(单个消息最大长度), 则断开socket重新链接

from im_android.

imkarl avatar imkarl commented on August 28, 2024

复现方式:

  • 客户端A 下线
  • 给客户端发送大量超过 1K 大小的文本内容消息
  • 客户端A 上线
  • 客户端A 断网
  • 客户端A 联网
  • 重复断网、联网操作
  • 一段时间后,会导致byte[] data变成不可解包的数据,大小持续增加(心跳)

以下是在 IMService.handleData() 中打印 "handleData: "+this.data.length的Log日志:

image

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

麻烦发下完整日志, 保留原来的日志, 文本附件

from im_android.

imkarl avatar imkarl commented on August 28, 2024

涉及到公司数据,不太方便发、 而且日志也没有看到其他额外的有用信息

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

过滤tag, 保留imservice的日志就好了

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

还有你们用的sdk 的版本(commit id), 链接的服务器地址是?如果是私有部署,提供服务器版本(commitid), 以及是否有修改过服务器代码?

from im_android.

imkarl avatar imkarl commented on August 28, 2024

我没有用你前面发的patch版本

客户端代码没有改动,服务器端代码不清楚有没有改动

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

1.提供客户端 imservice 完整日志
2.使用patch,测试问题是否解决, 如果没有解决,然后提供客户端 imservice的完整日志
3.同时请告知明确的版本(包括客户端及服务端),明确服务端代码的改动, 还请贵公司遵守服务器所使用的开源协议。

from im_android.

imkarl avatar imkarl commented on August 28, 2024
  1. 完整日志我在尝试分离导出
  2. 你前面给的patch方案,我不太认同,如果消息堆积太多,正常逻辑就存在超过64k的情况
  3. 刚刚跟我司后端确认了,后端代码也是没有修改过的。另外,你们的开源协议是什么?在哪里声明了,我去看看

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

"3.同时请告知明确的版本(包括客户端及服务端)"
patch解决的根据是:堆积在data缓存的单条消息不会超过64k
保留在data一定是不完整的一条消息, 否则是不会堆积在data缓存中的。
不认可也麻烦测试下

“2.使用patch,测试问题是否解决, 如果没有解决,然后提供客户端 imservice的完整日志”

from im_android.

imkarl avatar imkarl commented on August 28, 2024

logcat_imservice.txt

这个是基于18年3月份的Android端代码打印的日志;

服务器端是去年的代码,具体时间、commitId找不到。

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

你版本太旧了, 麻烦更新到最新的版本

from im_android.

imkarl avatar imkarl commented on August 28, 2024

对比过最新版的代码,逻辑还是一样的。而且我刚看了你的patch的修改内容,也不能解决data无限增长的问题。
把data清空倒是可以:

if (this.data.length > Message.MAX_MESSAGE_SIZE) {
    this.data = null;
    return false;
}

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

欢迎基于最新版本的pr,我们没有办法维护18年的版本了

from im_android.

imkarl avatar imkarl commented on August 28, 2024

你们最新版本同样存在这个问题。

from im_android.

imkarl avatar imkarl commented on August 28, 2024

归根结底,之所以会出现这个问题,还是因为没有考虑丢包问题。
如果在每个包之间增加特殊标志内容,以该标志分割每一个包,就不可能出现data无限增长的可能。

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

你怎么确定新版本有同样问题?还是请测试一下, 提供下完整日志

from im_android.

imkarl avatar imkarl commented on August 28, 2024

已经决定弃坑了~

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

如果你觉得自己的方案是对的, 我们欢迎pr

from im_android.

richmonkey avatar richmonkey commented on August 28, 2024

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.

richmonkey avatar richmonkey commented on August 28, 2024

18年的版本可能在重新链接socket的时候, 没有清空 this.data

from im_android.

imkarl avatar imkarl commented on August 28, 2024

确实如此,看最新的代码 this.data 会在连接上时清空,可以避免data无限增长。
但是在网络较差是,很可能频繁出现丢包,通过反复重连来解决丢包问题,实在是不可取。

from im_android.

Related Issues (9)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.