默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK的消息有大小限制吗?
阅读(50581) | 评论(4 收藏 淘帖1
S2C消息有大小限制吗? 稍微大一点的文本就 判定为【无法实时送达】了。

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

标签:MobileIMSDK
上一篇:[已回复] MobileIMSDK如何部署到linux服务器上下一篇:[已回复] MobileIMSDK为何不能 new ServerLauncher().startup()?

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

推荐方案
评论 4
这个问题被人问过挺多次了,我回答一下。

【首先】:MobileIMSDK的通信层是基于UDP的,所以理论上数据据文长度是有极限值的,这跟UDP协议的先天有关,具体一个UDP包能放多大的数据,看这个帖子:http://www.52im.net/thread-29-1-1.html

【其次】:既然我们所面对的是移动端IM,那必然不能用PC时代的这些理念来看待这个问题

1)从移动端的实际考虑,谁能在手机上打出这么多字?
2)如果是复制一篇长文章,你可以建议用户用链接,不然你UI的体验也会很差,要翻几屏才能看全文字,这算刷屏吗?


以上是移动端端IM的大文本发送的现实情况,个人认为很多时候跟PC端一样强求大文本的支持,实际上并不是特别有意义,再由就参照我上面的两条。

如果你非得要支持大文本,怎么办?
- 首先:我建议不要做拆包分包,那样技术上太繁琐了。
- 一个简单的实现思路因为这么大的文字通常都是很小几率出现的,因为如果大几率出现的话你那APP也差不多废了,谁没事整天刷屏。。。最简单的思路是:可以做一个http接口,当客户端判断大文本出现时(直接设定比如500个字以上就算大文件)就通过这个接口上传,然后还是正常用im发消息(只是发送的是截断前几百字符+http加载标识),接收方收到的是一条特殊的聊天消息(即显示的是截断预览内容,但点击消息可通过http接口加载这段文字并全屏显示出来,就像微信的双击全屏显示文本的效果一样),就可以了,这样不管是从用户体验还是技术实现上来说,都很优雅(无论如何,超大文本如果简单粗暴的直接在接收端刷屏,那实在是太影响观感了)。

个人意见,仅供参考。

***********************************************************

* 2021年最新补充请升级至MobileIMSDK v5 及以上版本,因选用tcp协议,即可解决这个问题!MobileIMSDK的tcp协议版本可支持单包最多2的32次方个字节内容。详见:https://github.com/JackJiang2011/MobileIMSDK/releases
群里面有人通过调大缓冲区的大小,也能支持大文本,但这对于一些特别的路由器来说,并不是都能支持(一个UDP包能放多大的数据,看这个帖子:http://www.52im.net/thread-29-1-1.html),建议自已去试试看。
多谢明白了,算上json本身的字符 按udp的做法 控制在548字节以下 真正的内容文本也剩不了多少了。
引用:yanjie 发表于 2016-10-24 14:48
多谢明白了,算上json本身的字符 按udp的做法 控制在548字节以下 真正的内容文本也剩不了多少了。

从移动端的实际体验考虑,就能想通了。
想想短信才70个字,但不影响它的实用性,因为从实际体验来讲,70个字的短信算是长的了,因为手机码字本来就慢,谁没事动不动几百个字的码。如果你非要说有复制粘贴的情况,那只能说每个人从产品设计的角度,看待的问题不一样。

建议别太纠结。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部