默认
发表评论 9
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
关于IM图片文件类型消息、群组消息实现、服务端对离线消息的处理的讨论
阅读(49974) | 评论(9 收藏1 淘帖 2
1、关于图片和文件等类型的消息的发送的解决方案:
这个在其他帖里面有过讨论,大神Jack Jiang 的方案和我之前想到的差不多,就是将图片or文件直接传到服务器,然后接口返回文件的静态url,然后我们可以将url连同文件名、文件大小、文件类型等信息封装到json字符串中然后就和文本消息的传输方法就一样了,只不过每次对方收到文本消息后都需要json解析然后进行相应的展示。

2、关于群组,Jack Jiang 大神有提到:
引用:先抛开性能不讲。群组的实现并不难。

首先可以确定的是,从服务端端向指定的一组用户发送消息,就相当于循环逐一向每一个人发送,一个循环而已。这解决了群组中的“发送”问题。

其次群组需要确定的是“向谁发送”?这也不难,通过应用层建立好群组,相应的用户加入群组,那么某个用户属于“哪个群组”就是个直观的问题了。当用户向它所属群组发送消息时,根据群组Id找到他所有群组的人员,就解决了“向谁发送”的问题了。如果用户量大,可以使用诸如radis这种缓存框架(当然,这只是建议,具体如何实现灵活性在开发者手上),在用户上下线时,将用户列表用这样的框架维护起来,则遍历查找用户的user_id的性能问题也可以很好地解决了。

至于群发性能,这就处理起来就有更多的灵活性了,如果需要快速完成功能原型,可以先简单地利用java线程池,保守实现之。

然后我和服务器端讨论的时候他说需要加一个消息类型用来区分一条消息是发给个人还是发给群组的。在这里我的想法是:MobileIMSDK里面发送群组消息的话那么聊天对象的Id就是群组的ID,我想的是服务端可以用G开头的字符串来作为群组ID然后个人ID可以用P开头的字符串,这样服务端就可以区分客服端发来的消息是针对个人的还是群组的了,但是不知道各位有没有更好一点的方案来参考一下?


3、服务器端提到他那边没有找到有离线发送消息和消息记录功能,离线消息可能要保存在堆栈里面,不知道处理起来麻烦不麻烦。

4、另外服务器端貌似没有心跳包来检测用户是否在线,不知道大家是怎样实现心跳检测的。


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

上一篇:[已回复] 关于MobileIMSDK集成到.net的技术咨询下一篇:[已回复] MobileIMSDK 支持哪些协议的封装
推荐方案
评论 9
你的问题是针对MobileIMSDK吗?
问题1 ,大家都是这么干的,这没什么疑问吗。
签名: 该会员没有填写今日想说内容.
问题3的离线消息没什么好纠结的吧,MobileIMSDK的算法可以保证:除非对方真正收到了消息(用应答包进行确认),否则就会通知进行离线处理,所以不存在会丢消息的情况。离线消息就直接存储到数据里呗,用户下次登陆的时候直接http拉一下就行了,大家都这么干。

问题4不理解你讲的。
签名: 国庆长假还没有缓过来,请让我静一静,产品狗死远点...
引用:JackJiang 发表于 2016-08-17 17:37
你的问题是针对MobileIMSDK吗?

是的,是针对MobileIMSDK的
签名: 生如夏花般绚烂
引用:什么狗屁云 发表于 2016-08-17 17:38
问题1 ,大家都是这么干的,这没什么疑问吗。

没有,这里只做一个总结
签名: 生如夏花般绚烂
引用:IMDeveloper 发表于 2016-08-17 17:44
问题3的离线消息没什么好纠结的吧,MobileIMSDK的算法可以保证:除非对方真正收到了消息(用应答包进行确认 ...

谢谢你对问题三的回答,问题四我现在发现MobileIMSDK中有心跳包相关的代码了。
签名: 生如夏花般绚烂
问题4,UserProcessor中记录了在线用户的Iosession,如果客户端端口,sessionClosed时,iosession也会销毁的
引用:yijunsign 发表于 2016-08-24 16:27
问题4,UserProcessor中记录了在线用户的Iosession,如果客户端端口,sessionClosed时,iosession也会销毁 ...

看来你是看过MobileIMSDK的源码的。。
引用:IMDeveloper 发表于 2016-08-17 17:44
问题3的离线消息没什么好纠结的吧,MobileIMSDK的算法可以保证:除非对方真正收到了消息(用应答包进行确认 ...

这里的离线处理(离线消息存储到数据里,用户登录时http拉一下)可以再具体讲一下吗,然后这个离线处理部分对应的MobileIMSDK算法哪个部分可以说一下吗。没有找到...谢谢啦!
签名: IM 头大头大
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部