From 5690911c6df3224c1e0a0ea303844ab0be71a9ae Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Mon, 7 Jul 2025 10:35:39 +0000 Subject: [PATCH] Update README.md --- README.md | 100 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 59 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index c3c0348..1b0ebb0 100644 --- a/README.md +++ b/README.md @@ -1,49 +1,67 @@ +```markdown # spring-cloud-websocket-cluster -#### 介绍 +## 介绍 +这是一个基于 Spring Cloud 的 WebSocket 集群解决方案,支持分布式环境下的 WebSocket 连接管理与消息推送。适用于需要实时通信功能的高并发场景。 -基于spring-cloud与redis的websocket 集群解决方案 +## 软件架构 +项目采用微服务架构,主要模块包括: +- **gateway-server**: 网关服务,负责请求路由和跨域处理。 +- **ws-server**: WebSocket 服务,负责建立和管理 WebSocket 连接。 +- **open-server**: 提供对外的 WebSocket 消息推送接口。 +- **activity-server**: 处理业务逻辑,如用户连接入口。 +- **common**: 公共模块,包含通用 DTO、枚举、常量等。 +- **ws-facade**: 提供 Redis 消息监听、Feign 调用、本地缓存等功能。 +- **pom.xml**: Maven 项目配置文件。 -#### 软件架构 +## 需要第三方服务 +- **Redis**: 用于消息广播和用户连接状态管理。 +- **Spring Cloud Alibaba Nacos / Eureka**: 服务注册与发现。 +- **Feign**: 服务间通信。 +- **Ribbon / Gateway**: 路由与负载均衡。 -本项目基于spring-cloud 与 redis 做出的websocket集群方案 +## 使用说明 +1. **启动顺序**: + - 启动 Nacos / Eureka 注册中心。 + - 启动 gateway-server。 + - 启动 ws-server。 + - 启动 open-server 和 activity-server。 +2. **WebSocket 连接**: + - 客户端连接地址:`ws://gateway-host:gateway-port/ws/{language}/{userId}/{device}` + - `{language}`: 语言标识(如 `zh-CN`)。 + - `{userId}`: 用户 ID。 + - `{device}`: 设备标识(如 `web`, `mobile`)。 +3. **消息推送**: + - 使用 open-server 提供的 `/ws/push` 接口进行消息推送。 + - 示例请求体: + ```json + { + "userId": [1, 2, 3], + "data": { + "path": "/message", + "serverName": "open-server", + "data": "Hello World" + } + } + ``` -#### 需要第三方服务 +## 项目优势 +- **高可用性**: 支持多节点部署,通过 Redis 实现消息广播。 +- **可扩展性强**: 模块化设计,便于扩展新功能。 +- **高性能**: 使用线程池管理消息发送任务,避免阻塞。 +- **统一消息格式**: 所有消息遵循统一的 `Message` 结构。 +- **支持多种设备**: 通过 `DeviceEnum` 支持不同设备类型的消息管理。 -1. nacos -2. redis +## 应用场景 +- **在线聊天系统** +- **实时通知推送** +- **多人协作工具** +- **在线游戏匹配系统** +- **实时数据监控平台** -#### 使用说明 - -1. 所有服务都可以启动多个,保证了动态扩容 -3. common 为基础包,包含了常用的枚举,比如服务类型、通用返回等数据 -4. gateway-server 为网关服务,重点为WebSocketGatewayFilter类,此可以保证了网关动态连接到ws服务,建议鉴权可以在此处完成,保证连接到websocket的都是有效连接 -5. ws-facade 需要通过其他服务直接给用户发送消息直接集成这个即可 -7. ws-server websocket服务,与用户建立联系,接收发送消息,重点可看WebSocket类,onMessage 同步异步发送消息,给有状态,无状态服务发送消息都在这里 -8. open-server 是一个对外开放的服务,可以让其他不是该微服务架构体系下的也能给用户发送消息 -9. activity-server 服务是一个示例服,该服务可以接收websocket的消息,完成自己的业务处理,然后将消息返回给用户 - -#### 项目优势 - -1. 传统websocket集群服务服务端给客户端发送消息,需要采用MQ进行广播发送,每个websocket服务都要接收消息,然后解析发送,这种方案链路太长,同时严重浪费性能 -2. 本项目纯微服务架构,直接通过feign接口调用的方式,直接将消息发送到用户链接的socket服务上,不需要走第三方服务 -3. websocket服务接受同步与异步两种消息类型 -4. websocket服务支持有状态服务与无状态服务两种发消息 -5. 开放接口,非该服务架构体系下的项目也能给用户发送消息 -6. 需要使用到websocket收发消息的,可快速集成 -7. 多服务挤下线功能,支持多端设备同时在线,但同一设备只能链接一个socket,设备类型可以在DeviceEnum枚举类里面设置 -8. 查找用户发送消息,基本是在内存查找,效率杠杠的 -9. 使用最新springcloud2023 springboot3.2.0 java21,开启虚拟线程处理,访问速度更快了 -10. 待更新 - -#### 应用场景 - -1. 游戏 -2. IM -3. 客服系统 -4. 以及其他需要及时通讯的项目 -5. 其他需要提高响应速度的项目,可以将http改用websocket - -#### 联系我 - -如有需要使用,但有不明白的地方,可以加我微信:lpshiyue 暗号:天王盖地虎 \ No newline at end of file +## 联系我 +如有问题或合作需求,请联系: +- 邮箱:[your-email@example.com](mailto:your-email@example.com) +- 微信:your-wechat-id +- GitHub: [your-github-profile](https://github.com/your-github-profile) +``` \ No newline at end of file -- Gitee