一、前言

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

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

二、流程设计

用户与群组通信_java

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

三、工程代码

用户与群组通信_java_02

根据我们的工程图稿,会涉及到代码块如下;