简单netty聊天室(后端部分)

简介

这是 SimpleNettyChatroom 项目的后端部分介绍。如果你想看更多关于该项目前端的内容,请点击下面的链接:

简单netty聊天室(前端部分)

如果你想浏览项目源码,请点击下面的链接:

https://github.com/ahy231/SimpleNettyChatroom

总体介绍

总体截图
一个普通的 Springboot 项目,目前只实现了一对一实时通讯。在 config 包里,有登录过滤器(GlobalConfig + LoginInterceptor)和错误处理(GlobalExceptionResolver)。在 Controller 包里实现了两个控制器,分别是处理登录的 LoginController (映射 \)和处理用户页面的 UserController (映射 \user)。因为太懒,所以 Service 包只写了实现类,没有写接口。o(TヘTo)

Netty部分

netty 的功能都放在 netty 包下。主要是两个类:NettyServerNettyServerHandler 。从上图可以看到, NettyServer 主要干了两件事,一件是把自己交给 Springboot 管理,另一件是使用了 Netty 框架构建服务器。

NettyServer 使用 @Component 注解使自己能够被 Springboot 当作容器管理,使用 @Value 注解使得属性能够从默认配置文件读取,实现 ApplicationRunner 接口使自己在启动时完成 netty 服务器的启动工作,实现 ApplicationListener<ContextClosedEvent> 使自己能随 Springboot 关闭而关闭。

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值