# 什锦在线聊天室后端 **Repository Path**: csmcool/assorted-online-chat-room-java ## Basic Information - **Project Name**: 什锦在线聊天室后端 - **Description**: 什锦在线聊天室的后端 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2022-08-21 - **Last Updated**: 2023-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 什锦在线聊天室后端 #### 介绍 什锦在线聊天室的后端,后端使用spring cloud划分服务,用户模块,聊天模块,文件模块等,与前端配合,实现用户之间的聊天。 #### 软件架构 1. 服务开发使用springboot 2. 不同服务之间使用springcloud openfeign调用,并用hystrix实现服务的熔断保护; 3. 使用rabbitmq用于消息发送到imserver微服务,并该微服务推送消息到前端; 4. 对于前端大文件上传使用分片上传的方式,防止文件上传超时; 5. 引入springcloudgateway作为服务门户,并根据路径进行鉴权,对于后台admin接口限制内网访问; 6. 使用nacos作为服务的注册中心。 7. 前后端交互统一使用JSON数据 #### 安装教程 1. git clone https://gitee.com/csmcool/assorted-online-chat-room-java.git到本地,建议使用idea打开。 2. 修改每个项目application.yml,mysql,rabbitmq,redis地址改为自己的地址,修改im-util的MailUtil,改成你自己的邮件。 3. 数据库sjim_oss_config 添加一条配置记录,为第三方oss的配置,目前只支持minio。 4. 使用idea的services一键打开所有项目; #### 部署教程 需要先安装maven,docker,docker-compose 1. git clone https://gitee.com/csmcool/assorted-online-chat-room-java.git到服务器,并修改每个服务的配置,修改im-util的MailUtil,改成你自己的邮件。 2. 先安装imutil和imbase两个公共模块到本地仓库(可以本地打包成jar上传到服务器,服务器第一次打包比较慢但是第一次会比较慢,需要下载依赖) 3. 打包服务执行maven打包命令(服务器打包可能会比较慢,可以先本地打包好,然后上传至服务器,上传到每个服务下的target目录) 4. 执行命令docker-compose -f docker-componse.yml up -d (我docker-componse文件并没有添加mysql,rabbitmq,redis,minio的一并安装,可以自行添加,省去自己安装这些麻烦) 5. 使用nginx对网关反向代理和对websocket进行反向代理。 ``` #websocket反向代理 location /server { proxy_pass http://localhost:9025/server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade websocket; proxy_set_header Connection Upgrade; proxy_connect_timeout 4s; #配置点1 proxy_read_timeout 60s; #配置点2,如果没效,可以考虑这个时间配置长一点 proxy_send_timeout 50s; #配置点3 add_header X-Cache $upstream_cache_status; } #网关的反向代理 有三个(/api2 /room /api3 /chat) location /api1 { proxy_pass http://localhost:9026/user; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status; } ``` #### 待开发 通知系统,第三方登陆,忘记密码,表情,聊天中回复,消息加密...