默认
发表评论 3
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 求教关于MobileIMSDK里传送较大量数据的疑问
阅读(36733) | 评论(3 收藏 淘帖1
系统逻辑如下:

  • 1.onVerifyUserCallBack(String userId, String token, String extra, Channel session) 中进行用户身份验证
  • 2.onUserLoginAction_CallBack(String userId, String extra, Channel session)中从数据库中读取属于该用户的好友信息还有好友请求信息然后转换成json格式通过LocalSendHelper.sendData送给前端用户

这个时候会出现一个问题 当好友较多时或者是好友请求信息过多时 json字符串就会很长,有的时候可能会上千个字符,这个时候再通过LocalSendHelper.sendData送给前端时,安卓前端就会报如下的错误:
W/LocalUDPDataReciever: 【IMCORE】处理消息的过程中发生了错误.
    com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at line 1 column 989

我个人理解应该就是传输的数据过长。

通过我自己减少服务端json字符串长度也验证了这个猜想,所以想向大神求证一下,还有就是如果确实是长度问题那么一般此类好友信息及系统信息该如果来传递到前端呢?还请指导下,谢谢!


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

上一篇:[已回复] 求助关于MobileIMSDK服务端单例模式并发安全问题下一篇:[已回复] 求教MobileIMSDK中TCP、UDP两种协议切换的疑问

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

推荐方案
评论 3
引用:jayhuang 发表于 2021-08-03 22:13
自己先回复一下吧
也怪自己没记性,没有认真的去看以前的帖子
个人信息,好友信息,系统离线好友请求等数 ...

对头,im的连接通道尽可能做到只收发小而精的指令,这样就能保持im实时通信逻辑的简洁性,从而保持高吞吐性能。说白了,就是能用http的就不要占用长连接。

具体你看看我在这里的回复《求教IM里长连接为什么不宜发送略大的数据?

另外,正经的im系统里,登陆认证都是调用Http接口(比如由单点登陆子系统提供的),通过认证系统返回的token再去连接im服务。连接调用是一短一长,这样系统设计就很灵活。《求教关IM服务器的用户安全认证的常用做法

至于你说的生成token的问题,你可以用JWT来生成,简单实用,你读一下:《即时通讯安全篇(七):用JWT技术解决IM系统Socket长连接的身份认证痛点
自己先回复一下吧
也怪自己没记性,没有认真的去看以前的帖子
个人信息,好友信息,系统离线好友请求等数据量可能很大的业务都是走http,整个IM是一个长短连接互相协助的过程
在登陆认证后系统生成一个token返回给前端 前端使用token进行http请求拉取相关信息
这里还有点想请教这个token的生成一般采取什么手段比较好呢?
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部