diff --git a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/DefaultSessionManager.java b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/DefaultSessionManager.java index afa36f944..3c7d5e83d 100644 --- a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/DefaultSessionManager.java +++ b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/DefaultSessionManager.java @@ -33,19 +33,23 @@ import cn.stylefeng.roses.kernel.auth.api.cookie.SessionCookieCreator; import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; +import cn.stylefeng.roses.kernel.message.api.expander.WebSocketConfigExpander; +import cn.stylefeng.roses.kernel.rule.callback.ConfigUpdateCallback; import cn.stylefeng.roses.kernel.rule.util.HttpServletUtil; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; import java.util.*; +import static cn.stylefeng.roses.kernel.message.api.constants.MessageConstants.WEB_SOCKET_WS_URL_CONFIG_CODE; + /** * 基于redis的会话管理 * * @author fengshuonan * @date 2019-09-28-14:43 */ -public class DefaultSessionManager implements SessionManagerApi { +public class DefaultSessionManager implements SessionManagerApi, ConfigUpdateCallback { /** * 登录用户缓存 @@ -215,4 +219,14 @@ public class DefaultSessionManager implements SessionManagerApi { return loginUsers; } + @Override + public void configUpdate(String code, String value) { + // 如果系统配置修改了websocket url,则刷新所有在线用户的配置 + if (WEB_SOCKET_WS_URL_CONFIG_CODE.equals(code)) { + List loginUsers = this.onlineUserList(); + for (LoginUser loginUser : loginUsers) { + loginUser.setWsUrl(WebSocketConfigExpander.getWebSocketWsUrl()); + } + } + } } diff --git a/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/constants/MessageConstants.java b/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/constants/MessageConstants.java index c63ed500e..44eaa5a96 100644 --- a/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/constants/MessageConstants.java +++ b/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/constants/MessageConstants.java @@ -52,4 +52,9 @@ public interface MessageConstants { */ String DEFAULT_WS_URL = "ws://localhost:8080/webSocket/{token}"; + /** + * 系统配置中websocket url的变量编码 + */ + String WEB_SOCKET_WS_URL_CONFIG_CODE = "WEB_SOCKET_WS_URL"; + } diff --git a/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeServiceImpl.java b/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeServiceImpl.java index 6e2cbf85e..5e2c516be 100644 --- a/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeServiceImpl.java +++ b/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; +import cn.stylefeng.roses.kernel.config.api.constants.ConfigConstants; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; @@ -254,7 +255,10 @@ public class SysThemeServiceImpl extends ServiceImpl i @Override public void configUpdate(String code, String value) { - clearThemeCache(); + // 如果服务默认部署的环境地址被修改 + if (ConfigConstants.SYS_SERVER_DEPLOY_HOST.equals(code)) { + clearThemeCache(); + } } /**