# 《分布式IM系统》大后端平台-消息服务-第03节:单聊消息的拉取流程设计和实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/17EhYgTo4 (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本节难度:★★★☆☆
  • 本节重点:对单聊消息的拉取流程进行设计和实现,从源码级别掌握单聊消息的拉取流程,重点理解单聊消息在整个分布式IM即时通讯系统中的推送与拉取的流转过程,结合自身实际项目思考,将本节学到的知识灵活应用到自身实际项目中。
  • 课程视频:https://t.zsxq.com/17EhYgTo4 (opens new window)

大家好,我是冰河~~

在分布式IM即时通讯系统的设计中,消息的流转过程总体上可以分成消息的推送流程和消息的拉取流程,推送流程主要是针对用户在线,并且能够实时接收消息的场景,而消息的拉取流程主要是针对离线用户,或者网络不稳定造成连接经常断开的用户,偶尔不能实时接收消息的场景。

# 一、前言

即时通讯需要用户终端与服务端建立长连接,以此实现消息的实时收发功能,但是这种长连接一般是不太稳定的,会因为各种原因断连。如果用户终端与服务端的连接断开,那用户就不能实时收到推送过来的消息了。此时,我们就需要实现消息的拉取流程来让用户能够收到离线消息,或者因为网络抖动断连造成的收不到消息问题,并且,也需要通过拉取消息来实现查询历史消息。

# 二、本节诉求

对单聊消息的拉取流程进行设计和实现,从源码级别掌握单聊消息的拉取流程,实现拉取未读消息记录、拉取全站历史记录以及拉取与某个用户的聊天记录等功能。重点理解单聊消息在整个分布式IM即时通讯系统中的推送与拉取的流转过程。

# 三、流程设计

在大后端平台消息微服务的单聊消息的拉取流程设计中,主要包含:拉取未读消息的流程、拉取消息全站消息的流程和分页拉取与某个用户的聊天记录的流程,具体如图3-1所示。


可以看到,整体流程还是比较简单的,主要涉及到用户、消息微服务、消息库、好友微服务、即时通讯SDK、消息中间件、即时通讯后端服务等,

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码