# 3.5:用户与群组通信

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!

# 一、前言

在上一章节我们实现了好友与好友的通信流程,可以简单回忆下我们是从对话框中选择好友进行发送信息。那么我们的对话框中还有一个默认的群组,接下来我们主要实现用户群组的通信。群组通信在 Netty 的实现中,是需要将用户的通信管道 Channel 放到 ChannelGroup 中进行群发消息,这样只要在这个通信管道组里的用户都可以收到消息。接下来我们实现具体的逻辑功能。

我们的群组目前是一个默认群组,默认会在数据库中把用户初始化到这个群组中,学习的小伙伴也也可以拿到源代码后扩展功能为创建群组加好友

# 二、流程设计

  • 从流程图上可以看到,与好友通信和群组通信的过程还是比较像的,但是在服务端还是有一个比较大的差异,就是群组通信需要使用到;ChannelGroup。在后续的代码中会有所体现。
  • 另外群组通信每一个用户发送消息,是需要把自己的;id、昵称、头像一并发送,当然这些固定的信息可以保存到客户端本地,一节省通信时间损耗。
  • 当然这里同样需要将群组的消息进行异步落库,保存群组的聊天记录。聊天记录这些信息在我们设计开发用户登录后,都会进行从数据库初始化展示到聊天面板中。