默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK基于Netty的tcp协议,tcp协议是可靠的,为何还需应答确认包呢?
请问,图二 channel的writeFlush的监听结果,如果是TCP类型的协议是不是到红框圈起来的这一步已经算是发送到客户端了

而图一由客户端发出的FROM_CLIENT_TYPE_OF_RECEIVED消息是主要用作UDP类型的确认消息呢?



即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

2.png (140.16 KB, 下载次数: 3396)

2.png

QQ图片20211207173215.png (114.05 KB, 下载次数: 3218)

QQ图片20211207173215.png
上一篇:求教,想把MobileIMSDK集成到普通的web项目中下一篇:[已回复] 求教MobileIMSDK中qos receive 和qos send 中定时时间取值问题

本帖已收录至以下技术专辑

推荐方案
评论 4
你的意思,是不是说,tcp是所谓的可靠协议,由它协议本身保证送达,应用层不需要QoS应答保证机制,是这样理解的吗?
引用:JackJiang 发表于 2021-12-08 11:22
你的意思,是不是说,tcp是所谓的可靠协议,由它协议本身保证送达,应用层不需要QoS应答保证机制,是这样理 ...

单独只是用TCP协议的话,理论上是不是监听器的回调方法返回成功后就说明消息已经到达接受端了呢
引用:kpsmile 发表于 2021-12-08 14:40
单独只是用TCP协议的话,理论上是不是监听器的回调方法返回成功后就说明消息已经到达接受端了呢

写代码,从理想情况下来说,当然怎么写都舒服了,但实际上,时间的复杂性往往出在在极端情况下,而这些复杂性又不得不考虑进去。

比如,移动网络下,网络质量跳变的很快,有时候信号很差,tcp丢包重传时间可能会要等很长,如果不能快速决定是不是要放弃,那就影响后绪的传输,以及应用层的用户体验。

另一个,如果没有应用层的确认机制,有时候可能tcp真的送达了,但应用层的某环节导致app奔溃或出了什么错等等。

总之,复杂情况很多,远不是依赖tcp协议本身就能解决的好的。

具体你可以看看这两篇文章《为什么说基于TCP的移动端IM仍然需要心跳保活?》、《从客户端的角度来谈谈移动端IM的消息可靠性和送达机制

引用:JackJiang 发表于 2021-12-08 14:53
写代码,从理想情况下来说,当然怎么写都舒服了,但实际上,时间的复杂性往往出在在极端情况下,而这些复 ...

好的,谢谢群主解惑
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部