基于 Netty 的仿桌面版微信聊天系统-学习日志
项目名称:基于 Netty 的仿桌面版微信聊天系统
技术栈:JavaFx、Netty4.x、SpringBoot、MySQL、DDD 领域驱动设计
项目周期:2025.5 - 2025.6
项目描述
设计并开发一款仿微信桌面端的即时通讯(IM)系统,实现用户登录、好友管理、实时聊天、消息通知等核心功能。通过 Netty 实现高性能网络通信,结合 JavaFx 构建桌面 UI,采用 DDD 分层架构提升代码可维护性,最终完成一个高可用、可扩展的聊天应用。
Netty
| JavaFx
| SpringBoot
| MySQL
| DDD
| TCP长连接
| 消息协议设计
| 断线重连
| 多线程优化
核心职责与成果
技术架构设计
- 采用 DDD 四层架构(接口层、应用层、领域层、基础设施层)解耦业务逻辑与通信模块。
- 基于 Netty 实现 TCP 长连接通信,支持消息编解码、心跳检测、断线重连(5秒重试机制)。
- 使用 JavaFx 开发桌面 UI,完成登录窗口、聊天窗口、好友列表、消息提醒等组件化设计。
核心功能实现
- 用户系统:基于 SpringBoot + MySQL 实现登录鉴权、好友关系管理(添加/删除/查询)。
- 实时通信:
- 文本消息收发:通过 Netty 自定义协议(消息头 + 消息体)保证数据传输可靠性。
- 消息状态同步:服务端推送未读消息,客户端本地存储聊天记录。
- 通知机制:桌面右下角弹窗提醒新消息,支持消息闪烁吸引用户注意力。
性能优化
- 使用 Netty 的零拷贝技术减少数据传输开销,单机支持 1000+ 并发连接。
- 通过 线程池隔离 UI 渲染与网络 I/O 操作,避免界面卡顿。
项目亮点
- 跨技术栈整合:将 JavaFx(前端)、Netty(通信)、SpringBoot(服务端)无缝结合,实现桌面端全栈开发。
- 代码规范:遵循 DDD 设计思想,模块职责清晰,便于后续扩展(如支持文件传输、群聊)。
项目收获
- 深入掌握 Netty 的 NIO 通信模型及自定义协议设计,理解 Dubbo、RocketMQ 等框架的底层通信原理。
- 实践 DDD 分层架构,提升复杂业务的模块化设计能力。
- 全链路开发经验:从 UI 到服务端,独立完成一个完整的高性能桌面应用。