# SpringCloudAnyNodeWebsocket **Repository Path**: tianchenggitee/spring-cloud-any-node-websocket ## Basic Information - **Project Name**: SpringCloudAnyNodeWebsocket - **Description**: SpringCloud 多节点 Websocket 可达性解决方案(基于 Redis 发布订阅) - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-10 - **Last Updated**: 2025-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README SpringCloud 多节点 Websocket 可达性解决方案(基于 Redis 发布订阅) 方案背景: 在 SpringCloud 微服务架构中,当同一服务存在多个节点时,传统 Websocket 通信会面临以下问题: 客户端连接被固定在某一节点,无法跨节点推送消息 节点间状态不同步导致消息丢失或重复推送 服务扩容 / 缩容时连接路由失效 本方案通过 Redis 发布订阅机制,实现跨节点的 Websocket 消息广播与状态同步,确保多节点环境下的通信可达性。 核心功能特性 跨节点消息广播:通过 Redis 发布订阅通道,将消息同步至所有节点的 Websocket 连接 连接状态集中管理:在 Redis 中维护客户端连接映射关系(clientId -> nodeId) 节点动态发现:基于 SpringCloud 服务注册与发现机制,自动感知节点上下线 目前此项目只是一个简单的demo 也可以模拟发布订阅的情况 有兴趣的同学可以跑一下 步骤: 1、连接redis 两个服务都要连接 配置文件在application.properties 2、启动目录下的websocket、websocket2 3、点击resource/static下面的indexOneToMany.html 发送消息 4、两个服务都会收到消息 根据sessionId 处理发送消息 环境: springboot jdk:1.8 redis