Skip to content

xu-ux/atchat-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

即时聊天

一、介绍

一个简单的即时聊天项目,前端暂未开源(等重构结束再说😎),可以实现加好友,图片、文本、语音消息聊天等功能

核心聊天功能使用Netty+WebSocket实现

缓存使用本地缓存,Redis相关配置被我清除了

头像和二维码使用单机版FastDFS存储

聊天过程中的音频和图片使用MinIo存储

备注:FastDFS和Minio文章末尾有安装方式

1.1 技术选型

SpringBoot
MyBatisPlus
Mysql
Druid
Redis
Netty
DingTalk
FastDFS
Minio
ELasticSearch
RabbitMQ
...

文件存储,可以自行去集成OSS(反正也不贵额🙄);项目里面有两种存储方式,其中Minio是后面刚好接触,顺便在业务层集成了它

1.2 项目结构

.
|-- AtchatApplication.java
|-- FastDFSBoot.java # fastDFS客户端
|-- NettyBoot.java # netty服务启动
|-- advance # 扩展异常
|-- annotation # 自定义注解
|-- cache # 本地缓存
|-- config # 配置文件
|-- constant # 常量
|-- controller # 接口
|-- mapper # 持久化
|-- model # 模型
|-- netty # netty的处理器
|-- service # 服务
|-- task # 定时任务
`-- util # 工具

1.3 待开发事项

  • 前端重构

    • uniapp
  • 后端重构

    • Netty集群
    • 微服务架构
  • 业务功能

    • JWT

    • 群聊、群组

    • 聊天记录搜索

    • 其他推送渠道

二、快速上手

2.1 启动运行

  1. 下载:

    git clone 项目

  2. 运行和编译环境: Maven IDEA JDK1.8

  3. 服务:

    安装FastDFSMinio,文末有安装方式

  4. 配置:

    需要修改test配置文件

# 数据库连接修改
spring.datasource.url=jdbc:mysql://localhost:3306/atchat?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=
spring.datasource.password=

# tracker服务器地址列表,需要修改
fdfs.tracker-list[0]=192.168.123.233:22122

# MinIo文件服务器,需要修改
min.io.endpoint=http://your.endpoint
min.io.accessKey=your_key
min.io.secretKey=your_secret
min.io.bucketName=your_bucketName
  1. 数据库:

    导入doc/sql/atchat.sql文件

三、系统展示

监控

Druid数据源监控: "SQL防火墙"

"Web请求监控"

聊天效果

两台客户端进行交流通信: "两台客户端进行交流通信"

四、FastDFS和Minio安装

4.1 Docker方式安装单机版FastDFS

使用docker安装,详细文章

1.拉取镜像生成容器 FASTDFS_IPADDR 设置主机IP

docker run -d --restart=always \
-e FASTDFS_IPADDR=192.168.1.234 \
-v /fastdfs/data:/home/dfs \
-p 22122:22122 \
-p 23000:23000 \
-p 8888:8888  \
-p 8011:80 \
--name fastdfs xuux/fastdfs:alpine

2.需要修改宿主机路由

iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 22122 -d 172.17.0.2 -j SNAT --to 192.168.1.234

4.2 Docker方式安装分布式存储Minio

使用docker安装,官网

About

🤣一个用Netty和WebSocket技术实现的即时聊天项目

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published