# 《分布式IM系统》即时通讯后端服务-第04节:即时通讯后端服务登录处理器的设计与实现

作者:冰河
星球: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/15Fbs6GZ1 (opens new window)

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

  • 本节难度:★★☆☆☆
  • 本节重点:对即时通讯后端服务的登录处理器进行设计和实现,并对用户的登录流程进行设计,掌握消息处理器的设计方法和落地实现方案。并能够将其灵活应用到自身实际项目中。
  • 课程视频:https://t.zsxq.com/15Fbs6GZ1 (opens new window)

大家好,我是冰河~~

对于即时通讯后端服务来说,最重要的功能就是对消息的接收和发送,在消息的类型上,总体上可以分为登录消息、心跳消息、单聊消息、私聊消息等。即时通讯后端服务会根据不同的消息类型,做出不同的处理方式。

# 一、前言

当用户通过终端调用大后端平台的接口,登录分布式IM即时通讯系统时,大后端平台检验成功后,会生成一个JWT Token返回给用户终端。用户终端随即与即时通讯后端服务建立连接,发送一条带有JWT Token的登录消息,即时通讯后端服务接收到登录消息后,就会对登录的逻辑进行处理。

# 二、本节诉求

对即时通讯后端服务的登录处理器进行设计和实现,即时通讯后端服务接收到登录消息后,对登录的逻辑进行处理。主要是对JWT Token的校验,获取用户终端与即时通讯后端服务建立的连接,处理异地登录逻辑,设置用户与终端的属性、初始化心跳次数,并缓存与用户终端建立连接的即时通讯后端服务ID。

# 三、流程设计

用户通过终端登录分布式IM即时通讯系统时,总体的交互流程如图4-1所示。


可以看到,当用户通过终端调用大后端平台的接口,登录分布式IM即时通讯系统时,大后端平台检验成功后,会生成一个JWT Token返回给用户终端。用户终端随即与即时通讯后端服务建立连接,发送一条带有JWT Token的登录消息,此时即时通讯后端服务会通过消息处理器工厂类,从IOC容器中获取到登录处理器,通过登录处理器来处理登录的业务逻辑。

# 四、类结构设计

即时通讯后端服务最核心、也是最主要的功能就是收发消息,在收发消息的类型上,包括:登录消息、心跳消息、单聊消息和群聊消息。同样,在即时通讯后端服务收发消息的核心类就是IMChannelHandler,处理登录消息的整体流程会涉及到:IMChannelHandler类、MessageProcessor接口、ProcessorFactory类、LoginProcessor类,整体结构如图4-2所示。


可以看到,整体类结构关系还是相对比较简单的。映射到实际项目中的代码如图4-3所示。

# 查看全文

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