简介
这是 SimpleNettyChatroom 项目的后端部分介绍。如果你想看更多关于该项目前端的内容,请点击下面的链接:
如果你想浏览项目源码,请点击下面的链接:
https://github.com/ahy231/SimpleNettyChatroom
总体介绍

一个普通的 Springboot 项目,目前只实现了一对一实时通讯。在 config 包里,有登录过滤器(GlobalConfig + LoginInterceptor)和错误处理(GlobalExceptionResolver)。在 Controller 包里实现了两个控制器,分别是处理登录的 LoginController (映射 \)和处理用户页面的 UserController (映射 \user)。因为太懒,所以 Service 包只写了实现类,没有写接口。o(TヘTo)
Netty部分
netty 的功能都放在 netty 包下。主要是两个类:NettyServer 和 NettyServerHandler 。从上图可以看到, NettyServer 主要干了两件事,一件是把自己交给 Springboot 管理,另一件是使用了 Netty 框架构建服务器。
NettyServer 使用 @Component 注解使自己能够被 Springboot 当作容器管理,使用 @Value 注解使得属性能够从默认配置文件读取,实现 ApplicationRunner 接口使自己在启动时完成 netty 服务器的启动工作,实现 ApplicationListener<ContextClosedEvent> 使自己能随 Springboot 关闭而关闭。

在 netty 框架基本部分中,我用图中的 handler 解决了粘包、拆包的问题,将 HTTP 协议升级到 WebSocket 协议,专门用来处理即时通讯的功能。


NettyServerHandler 中的业务逻辑主要靠 channelMap 属性,channelMap 是一个从用户名到其对应的 channel 的映射,在业务处理中就可以直接通过用户名找到对应的 channel 发送消息。

本文介绍了如何使用Springboot和Netty构建一个实时聊天室应用,包括登录过滤、错误处理、WebSocket升级和NettyServer组件的设计。重点展示了NettyServerHandler如何处理消息传递与用户映射。
&spm=1001.2101.3001.5002&articleId=113875818&d=1&t=3&u=37319878bbb240339954d8a4267e0288)
218

被折叠的 条评论
为什么被折叠?



