默认
打赏 发表评论 24
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
引用:pigo残 发表于 2017-07-27 10:28
能说说MQ在IM架构中的使用方式么

按照我的理解就是:一般的TCP/IP通信可能出现丢包,也不一定能保证消息顺序发送,MQ就是解决这个问题的。不知道对不对。
评论 24
博主好,如你所说,将未成功发送的消息或离线消息暂存到消息队列。
1、此时客户端上线,而服务端有在线消息和离线消息都要推给客户端,如何保证这两种消息的时序性?
2、服务端如何判断消息送达,判断客户端是否在线不能保证消息必达;如果用回调+延时判断转发失败,那是不是要用一个队列来管理回调函数?这样在高并发的情况下是否会对系统性能产生影响?
引用:JackJiang 发表于 2018-02-01 17:37
有个概念你可能分的不清。
现在主流的IM中,离线消息和实时消息走的是不同的通道,离线消息是在登陆时通 ...

我知道是“拉”取消息,我的意思是:打个比方,我微信上线了,这时候我会从服务端获取离线消息(比如是我朋友约我星期六玩),但是很巧的是,在我拉取消息的时候,这个朋友想确认一下我星期六是否有空,又给我发了信息,此时我是在线的,应该由服务端push过来。那客户端是不是要做消息时间的判断来显示消息呢?否则的话,可能他实时的消息显示在前,离线的消息显示在后。但是客户端做时间判断的话,可能出现一种情况就是我实时的消息显示了,结果离线消息过来以后,在当前的消息之前又冒出来几条消息。这样的场景在微信中好像不存在。
引用:JackJiang 发表于 2018-02-02 10:40
离线消息一定是无条件插到聊天列表的前面的,因为这次拉的消息肯定比你刚才收到的实时消息要老,不用判断 ...

我就卡在这一步,离线消息如何无条件插到列表前面?如果我的离线消息里面有一张图片(或者说离线消息体量比较大),那这个时候,实时的消息已经push过来了,之后我收到了图片并且转码完成要显示了,如您所说,不判断时间的话,怎么让图片显示在它该显示的地方呢?
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部