diff --git a/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketHandlerConfig.java b/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketHandlerConfig.java index 4c7809709..7215097d8 100644 --- a/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketHandlerConfig.java +++ b/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketHandlerConfig.java @@ -14,7 +14,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.client.ServiceInstance; import org.springframework.context.annotation.Bean; import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.handler.TextWebSocketHandler; @@ -32,8 +31,8 @@ public class WebSocketHandlerConfig { @Bean @ConditionalOnMissingBean(SessionKeyGenerator.class) - public SessionKeyGenerator sessionKeyGenerator(ServiceInstance serviceInstance) { - return new PigxSessionKeyGenerator(serviceInstance); + public SessionKeyGenerator sessionKeyGenerator() { + return new PigxSessionKeyGenerator(); } @Bean diff --git a/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/custom/PigxSessionKeyGenerator.java b/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/custom/PigxSessionKeyGenerator.java index 33c5dfb26..a618b3ad6 100644 --- a/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/custom/PigxSessionKeyGenerator.java +++ b/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/custom/PigxSessionKeyGenerator.java @@ -3,7 +3,6 @@ package com.pig4cloud.pigx.common.websocket.custom; import com.pig4cloud.pigx.common.security.service.PigxUser; import com.pig4cloud.pigx.common.websocket.holder.SessionKeyGenerator; import lombok.RequiredArgsConstructor; -import org.springframework.cloud.client.ServiceInstance; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.WebSocketSession; @@ -15,8 +14,6 @@ import org.springframework.web.socket.WebSocketSession; @RequiredArgsConstructor public class PigxSessionKeyGenerator implements SessionKeyGenerator { - private final ServiceInstance instance; - /** * 获取当前session的唯一标识 * @param webSocketSession 当前session @@ -29,8 +26,8 @@ public class PigxSessionKeyGenerator implements SessionKeyGenerator { if (obj instanceof PigxUser) { PigxUser user = (PigxUser) obj; - // IP:port:userId 作为唯一区分 - return String.format("%s:%s:%s", instance.getHost(), instance.getPort(), user.getId()); + // userId 作为唯一区分 + return user.getId(); } return null; diff --git a/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/distribute/RedisMessageDistributor.java b/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/distribute/RedisMessageDistributor.java index 3833c6716..380d9acab 100644 --- a/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/distribute/RedisMessageDistributor.java +++ b/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/distribute/RedisMessageDistributor.java @@ -1,14 +1,9 @@ package com.pig4cloud.pigx.common.websocket.distribute; import cn.hutool.json.JSONUtil; -import com.pig4cloud.pigx.common.core.util.SpringContextHolder; import lombok.RequiredArgsConstructor; -import org.springframework.cloud.client.ServiceInstance; import org.springframework.data.redis.core.StringRedisTemplate; -import java.util.List; -import java.util.stream.Collectors; - /** * 消息分发器 * @@ -26,13 +21,6 @@ public class RedisMessageDistributor implements MessageDistributor { */ @Override public void distribute(MessageDO messageDO) { - // 包装 sessionKey 适配分布式多环境 - ServiceInstance instance = SpringContextHolder.getBean(ServiceInstance.class); - List sessionKeyList = messageDO.getSessionKeys().stream() - .map(key -> String.format("%s:%s:%s", instance.getHost(), instance.getPort(), key)) - .collect(Collectors.toList()); - messageDO.setSessionKeys(sessionKeyList); - String str = JSONUtil.toJsonStr(messageDO); stringRedisTemplate.convertAndSend(RedisWebsocketMessageListener.CHANNEL, str); }